本文代码示例多出自《Objective-C高级编程 iOS与OS X多线程和内存管理》,也有多处解释参考原文。也有部分内容参考于《Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法》
Block是一种特殊的,可以生存在栈区(叫栈块)、堆区(叫堆块)、以及程序数据区域即全局区(叫全局块)的Objective-C对象。在堆区的Block也有引用计数,适用于ARC的内存管理机制。
clang(LLVM编译器)能把Objective-C转换成可读源代码(C++)的功能:
clang -rewrite-objc 源代码文件名
</br>
因为原文章过长,谁都很难有勇气一口气读完,故把其分为以下几个部分:
1、Block仅用作输出语句的情况
</br>
2、Block截获自动变量的情况
</br>
3、Block截获静态变量的情况
</br>
4、Block中使用__block变量的情况
</br>
5、Block截获对象的情况
</br>
6、Block使用__block�变量,且该变量为对象的情况
</br>
7、Block存储域
</br>
8、__block变量存储域
</br>
网友评论