链表链表概念链表是一种数据结构,和数组同级。比如,java中我们使用的ArrayList,其实现原理是数组。而LinkedList的实现原理就是链表了。链表在进行循环遍历的效率不高,但是插入和删除时优势明显。链表就是链式存储的线性表。根据指针域的不同,链表分为单向链表,双向链表,循环链表等等。 单向节点链表中最简单的一种就是单向链表,它包含两个域,一个信息域和一个指针域。这个链表指向链表中的下一个节点,而最后一个节点则指向一个空值。单向链表是一种线性表,实际上是由节点(Node)组成的,...
记录Photos框架的使用
记录Photos框架的使用前言这几天项目里用到了图片选择器,就想把之前项目里用ALAssetsLibrary框架封装的图片选择器拿过来用,但是ALAssetsLibrary框架在9.0之后就被弃用了。所以,就要试试Photos框架了。在网上找了几篇blog研究了一下,就搞了起来。期间也踩了几个坑,所以开篇记录一下。 第一波 获取用户相册先介绍一些概念,大家可以参考一下这篇blog PHAsset:代表照片库中的一个资源,跟 ALAsset 类似,通过 PHAsset 可以获取和保存资源...
iOS深入学习 - Socket
网络各个协议:TCP/IP、socket、Http等网络七层由上而下分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。其中物理层、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象;传输层、会话层、表示层和应用层被称为主机层,是用户所面向和关心的内容。 http协议对应于应用层 TCP协议对应于传输层 ip协议对应于网络层 三者本质上没有可比性,何况Http协议是基于TCP连接的。 TCP/IP是传输层协议,主要解决数据如何在网络中传输的;而Http是应用...
iOS深入学习 - Runtime
SmallTalk 与 C 的融合–Objective-C三十几年前,Brad Cox 和 Tom Love在主流且高效的C语言基础上,借鉴Smalltalk的面向对象与消息机制,想要搞出一个易用且轻量的C语言扩展,但C和Smalltalk的思想和语法格格不入,比如在Smalltalk中一切皆对象,一切调用都是消息: 1233 log 再比如用一个工厂方法来实例化一个对象: 1p := Person name: 'sunnyxx' age: 26 在当时来看,一个具有...
iOS深入学习 - 多线程
多线程简单介绍进程和线程1、什么是进程进程是指在系统中正在运行的一个应用程序,每个进程之间是相互独立的,每个进程均运行在其专用且受保护的内存空间内。比如同时打开QQ、Xcode,系统会分别启动2个进程,通过“活动监视器”可以查看Mac系统中所开启的进程。2、什么是线程1个进程想要执行任务,必须得有线程(每一个进程至少要有一条线程即:主线程),线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行,比如使用音乐播放器播放音乐,使用下载器下载电影,都需要在线程中执行。3、线程的串...
iOS深入学习 - RunLoop
RunLoop概念:原文作者Blog地址点这里。一般来讲一个线程只能执行一个任务,执行完成后线程就会退出。如果我们需要一个机制,让线程能随时执行任务但不退出,代码逻辑通常如下:runloop处理事件的代码逻辑模拟(Event Loop) 1234567function loop() { initialize(); do { var message = get_next_messsage(); process_message(me...
iOS开发-渐变色踩的坑
这些坑踩的好疼个人的域名和blog搭建好了有一段时间,但是一直没有抽时间来写自己的blog。所以就抽了一点时间来记录一下,最近项目中遇到的一些坑。言归正传,最近的项目中,UI的设计图里出了一个渐变色的按钮,而且按钮点击的时候还需要一个透明度为0.3的黑色遮盖在渐变色上。然后,坑就开始了。 第一个大坑(hitTest:withEvent:)我实现的大体思路是把渐变色绘制成image设置成按钮的背景图,然后,在button上添加一个view,没点击时,设置为透明色,点击时设置为alpha为0...
iOS开发-xib添加常用的KeyPath修改属性
###步骤1、点击xib,在xcode右半部分切换到第三项,如图: 2、点击+添加key,选择类型,设置值;常用的有clipsToBounds,layer.cornerRadius设置圆角等
iOS开发-没有数据时不显示tableView的分割线
#iOS开发中关于没有数据时不显示tableView的分割线 12//可以直接添加如下代码即可self.tableView.tableFooterView = [[UIView alloc]initWithFrame:CGRectZero];