底层9:block循环引用

2020-08-31  本文已影响0人  张无奈

由于block会对block中的对象进行持有操作,就相当于持有了其中的对象,而如果此时block中的对象又持有了该block,则会造成循环引用

ARC循环引用解决:__weak、__unsafe_unretained、__block

解决循环引用问题 - MRC

__weak:不会产生强引用,指向的对象销毁时,会自动让指针置为nil

__unsafe_unretained:不会产生强引用,不安全。指向的对象销毁时,指针存储的地址值不变,会产生野指针。

__block:需要在内部置为nil,缺点时必须要调用block

MRC环境下解决循环引用:__unsafe_unretained、__block(因为在mrc环境下,不会retain产生强引用)

MRC不支持__weak


上一篇 下一篇

猜你喜欢

热点阅读