如果在block代码块中调用self视图或视图控制器时,如果不采取措施,block会持有强引用的self,而self也会强引用持有block,这样就会造成循环引用,进而造成内存泄露问题。
解决这个问题的方法很简单,就是解除block对self的强引用。
__block typeof(self) bself = self;
__block id weakSelf = self;
[self methodThatTakesABlock:^ {
[bself doSomething];
}