第 5 章 代码块
5.1了解代码块
5.1.1 声明代码块
void (^myBlock)(NSString *x) = ^(NSString *x)
{
NSLog(@“%@”, x);
};
5.1.2 使用代码块
5.2.1 管理代码块内存
由于它是在栈上分配的,因此对于传入的代码块对象需要使用-copy 而不是 -retain ,如果需要保留它就必须在堆上得到一个副本
5.2.2 通过 typedef 提高代码块的可读性
5.3 在线程中使用代码块
5.3.1 使用 GCD
5.3.2 使用 GCD 在线程中调度代码块
5.4 通用的代码块设计模式
5.4.1 将代码块作为映射
5.4.2 在标准 API 中使用代码块
5.5 在易并行任务中应用代码块
5.5.2 在数组中使用代码块过滤素数
5.5.3 使用 GCD
5.6 小结
本章介绍了 Objective-C 工具箱中一个强大的新工具。代码块非常有用,他可以封装一小块匿名的代码并且像对象一样传递这些代码块。这使得仅将新类型的代码块作为参数传入,就可以创建一个经过改进具备不同功能的更通用的方法。此外,代码块使得 GCD 变得极其简单,因为它提供了表达功能块并将功能传入到队列进行执行的能力。