当block中用到self时,需谨慎!
来源:程序员人生 发布时间:2014-12-19 08:22:48 阅读次数:3487次
让人蛋疼的block!
block对其变量都会构成strong reference,对self也会构成strong reference ,而如果self本身对block也是 strong reference 的话,就会构成 strong reference 循环,造成内存泄漏,为了避免这类情况产生,在block外部应当创建1个week(__block) reference。
所以在block内如果有self的话,1般都会在block外面加1句_block typeof(self)bself = self;
__block typeof(self) bself = self;
[self methodThatTakesABlock:^ {
[bself doSomething];
}
1定要避免在block中用到self时把self对象retain, 造成内存泄漏。
生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠