底层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