block 原理总结

2019-06-22  本文已影响0人  iOS坚持者

block 对变量的引用:

存储位置

在 ARC 下只访问局部变量的 block 会放在栈上,但是 ARC会在以下情况下自动 copy 到堆上
1、block 作为函数返回值时
2、block 用 strong 修饰时,ARC 对象默认修饰符为 strong
3、block作为Cocoa API中方法名含有usingBlock的方法参数时
4、作为GCD API的方法参数时

要点

block 块引用对象时,copy函数会将person地址传入_Block_object_assign函数,_Block_object_assign中对Person对象进行强引用或者弱引用
无论如何block内部中对__block修饰变量生成的结构体都是强引用,结构体内部对外部变量的引用取决于传入block内部的变量是强引用还是弱引用
http://www.cocoachina.com/ios/20180628/23965.html
http://www.cocoachina.com/ios/20180628/23968.html

上一篇 下一篇

猜你喜欢

热点阅读