Objective-C代码块(Block)实质与实现探究

2016-12-30  本文已影响0人  KardelShaw

本文代码示例多出自《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>

9、__block变量的成员变量__forwarding存在的意义
上一篇下一篇

猜你喜欢

热点阅读