block的一些注意事项

Block的使用注意:

block的内存管理(注意循环引用,默认在栈中(不需要内存管理),通过copy就在在堆中,就要注意内存管理)

防止循环retian

非ARC(MRC):__block

ARC:__weak\__unsafe_unretained

1)当对block使用copy时,就自动将block函数内容从栈区复制到堆区

2)在block块中引用[p run],两者之间会产生一个强引用,最终导致循环引用

3)对block对象使用weak,则能避免此类情况


当使用int age = 10 时,block块中会出现值捕获,即在工程编译时,age = 10;便会传递到block块中,及时在下面重新对age赋值,block块中的age值也不会发生改变,仍为10;

当使用——block int age = 10时,则将age改变成一个变量,每次对age 重新赋值,都会重新调用block块函数,从而age的值会不断发生改变。

当block和控制器相互引用时


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容