程序员人生 网站导航

当block中用到self时,需谨慎!

栏目:综合技术时间:2014-12-19 08:22:48

让人蛋疼的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, 造成内存泄漏。
------分隔线----------------------------
------分隔线----------------------------

最新技术推荐