使用Block的时候,一般通常都会使用weakSelf与strongSelf修饰。(其实我一直都是在外部使用weakSelf修饰,难道strongSelf被吃了吗?)
__seakSelf typeof(self) weakSelf = self;
[self doSomeBlock:^{
__strongSelf typeof(weakSelf) strongSelf = weakSelf;
if(strongSlef){....}
}]
在block中需要对weakSelf进行strong,保证代码在执行到block中,self不会被释放,当block执行完后,会自动释放该strongSelf。
除了__weakSelf外,还有就是强行将block置成nil,打破循环链。