block内部实现原理(三)

block内部实现原理(一)

block内部实现原理(二)

【block在arc下实现】

首先说结果,在局部传参过程中(直接传参,__block关键字,static关键字)block在ARC下和MRC并没有区别,

但是由于ARC的原因直接用__block关键字会有可能造成循环引用。所有针对对象用关键字__weak,__unsafe_unretained

如果用__weak,__unsafe_unretained ,会copy一份,并不会对外面参数的值进行修改,甚至修饰普通变量会有警告,

所以,基本不需要考虑arc与mrc的关系,注意循环引用即可

【带参数的block 】

带参的block方法与不带参的block方法的区别和正常带参方法与不带参方法基本相同

参数为block 传递的则是一个指针

To be continue

 

原文地址:https://www.cnblogs.com/yoon/p/4953818.html