网络请求connection session
摘要:网络请求: NSURLConnection 发送同步请求: nsurlconnection发送同步请求是阻塞式,会阻塞当前线程 发送异步请求: nsurlconnection发送异步请求底层是开启子线程发送请求,回调默认是在主线程中回调,如果需要在子线程中回调可以设置代理队列setDelegateQ
阅读全文
posted @
2017-09-18 22:37
HJiang
阅读(339)
推荐(0)
NSObject中类方法load/initialize加载时机和作用
摘要:方法调用时机 相同点: 程序启动都只会执行仅且一次,再次怎么调用使用类都不会执行了. 不同点: 方法调用时机不一样. > + load程序启动类加载时就会调用,不管该类是否有使用或有Import都会执行 > + initialize 程序启动后,只有类使用时都会触发,包括调用类的类方法或对象方法;
阅读全文
posted @
2017-09-09 17:13
HJiang
阅读(421)
推荐(0)
GCD dispatch_source基本使用,创建GCD定时器与NSTimer的区别
摘要:可以使用GCD创建定时器 创建定时器: 注意创建gcd定时器timer后,需要保存timer,需要有个引用引用timer,要不然timer会销毁 取消定时器 总结 GCD定时器 1.时间调度很准确,时间是以纳秒为单位,比NSTimer更加精确 2.GCD是不受runloop的影响, 比如:拖动scr
阅读全文
posted @
2017-09-09 11:19
HJiang
阅读(535)
推荐(0)
Runtime
摘要:Runtime是什么? runtime是OC底层的一套C语言的API(引入 <objc/runtime.h> 或<objc/message.h>),编译器最终都会将OC代码转化为运行时代码,底层是通过runtime创建的对象. 另外利用runtime 可以做一些OC不容易实现的功能 .动态交换两个方
阅读全文
posted @
2017-09-04 23:16
HJiang
阅读(259)
推荐(0)
Runloop运行循环的理解
摘要:runloop运行流程图 定时器 结论:如果定时器在主线程中开启,可以正常运行;定时器在子线程中开启,无法正常运行; 如果对应线程没有 RunLoop 该方法也会失效,也就是说currentRunloop中 没有timer,没有source,也没有OBServer,添加 [NSRunLoop cur
阅读全文
posted @
2017-09-04 23:00
HJiang
阅读(589)
推荐(0)
GCD dispatch_apply基本使用
摘要:dispatch_apply,可以并发的循环迭代,性能上可以提高,前提是循环不在乎迭代的顺序 如果不想让在当前线程参与迭代任务,可以把整个迭代任务包含在一个新的线程中 (优先采用此方式), 如: 但此方式需要注意一个问题,就是新开的线程包含的迭代任务,不要是同一个队列,要不然整个迭代任务会在同一个线
阅读全文
posted @
2017-09-02 21:20
HJiang
阅读(351)
推荐(0)
GCD信号量semaphore控制线程并发数
摘要:GCD提供了信号semaphore来控制线程并发数,提供一下三个函数 dispatch_semaphore_create(<#long value#>) // 创建信号semaphore,value参数为任务并发同时执行时线程最大并发数 dispatch_semaphore_wait(<#dispa
阅读全文
posted @
2017-09-02 20:43
HJiang
阅读(699)
推荐(0)
多线程GCD dispatch_once_t/dispatch_barrier_<a>sync/dispatch_group_t
摘要:dispatch_once 在dispatch_once block中的代码在程序启动到程序退回只会执行一次,如:不管for循环多少,只会一次打印 利用dispatch_once实现单粒模式 单粒模式(不管以任何方式创建对象,内存中永远只会有且仅有一份该对象的地址) 实现单粒,需要步骤: 1.提供一
阅读全文
posted @
2017-09-01 18:02
HJiang
阅读(275)
推荐(0)
iOS开发常用宏定义
摘要:单粒模式宏定义 宏中使用##,传入参数作为shared方法名称: 定义开发模式和发布模式条件宏 替换系统NSLog
阅读全文
posted @
2017-09-01 11:04
HJiang
阅读(304)
推荐(0)
OC方法可变参数
摘要:OC可变参数: 使用__attribute__((sentinel))语法可以告诉编译器这是一个需要哨兵参数的函数。它的作用就是告诉函数没有参数了。这也是为什么ObjC中[NSArray arrayWithObjects: ...,nil]最后必须以nil参数结尾的原因
阅读全文
posted @
2017-09-01 11:01
HJiang
阅读(440)
推荐(0)