Block的循环引用

作者: 浪尘子 | 来源:发表于2017-01-08 00:37 被阅读0次

Block的循环引用(需要完全掌握)

5.1造成Block循环引用的条件:"Block强引用self"并且"self强引用Block"

//定义属性使用copy,表示`self`强引用`task`

@property(nonatomic,copy)void(^task)();

// block内部访问了`self`,会对`self`进行拷贝(强引用,引用计数+1)

void(^task)() = ^{

NSLog(@"%@ - %@",self.view);

};

// self --> task --> self

self.task = task;

5.2如何解决Block的循环引用

//解决:使用__weak修饰self

__weaktypeof(self) weakSelf =self;

__weakViewController *weakSelf =self;

小节下: 记住一点所有的循环应用都是self强引用了对象,对象又强引用了self....我们只要找到这个引用环,把其中一个对象改成弱引用就好了.

相关文章

网友评论

    本文标题:Block的循环引用

    本文链接:https://www.haomeiwen.com/subject/xicqbttx.html