一、Block
block的代码是内联的,效率高于函数调用
block对于外部变量默认是只读属性
block被Objective-C看成是对象处理
iOS开发-由浅至深学习block - 简书 (jianshu.com)
(16条消息) iOS Block用法和实现原理_jeffasd的专栏-CSDN博客
二、多线程编程
GCD
使用步骤其实很简单,只有两步:
创建一个队列(串行队列或并发队列);
将任务追加到任务的等待队列中,然后系统就会根据任务类型执行任务(同步执行或异步执行)。
iOS 多线程:『GCD』详尽总结 - 简书 (jianshu.com)
NSThread
可以直接操作线程对象。不过也需要需要程序员自己管理线程的生命周期(主要是创建),
iOS 多线程:『pthread、NSThread』详尽总结 - 简书 (jianshu.com)
NSOperationQueue
NSOperation、NSOperationQueue 是基于 GCD 更高一层的封装,完全面向对象。但是比 GCD 更简单易用、代码可读性也更高。
为什么要使用 NSOperation、NSOperationQueue?
1.可添加完成的代码块,在操作完成后执行。
2.添加操作之间的依赖关系,方便的控制执行顺序。
3.设定操作执行的优先级。
4.可以很方便的取消一个操作的执行。
5.使用 KVO 观察对操作执行状态的更改:isExecuteing、isFinished、isCancelled。
iOS 多线程:『NSOperation、NSOperationQueue』详尽总结 - 简书 (jianshu.com)