1.weakself弱引用self
// 第一种解决方式 weak+ weak - Strong-dance
__weak typeof(self) weakSelf = self;
self.block = ^{
NSLog(@"%@",weakSelf.name);
//续租 延长生命周期 strong
// __strong typeof (self) strongSelf = weakSelf;
};//性能差
2.___block修饰对象 《要在block内置空对象,而且block必须调用》 --->MRC下也是使用此方法
//第二种解决方式 mrc:__block
__block ViewController *weakVC = self; //栈区拷贝到堆区,内存空间重新拷贝一份。__block自动捕捉到堆里面去,是它特有的属性
//weakvc->self--block--weakVC
self.block = ^{
NSLog(@"%@",weakVC.name);
//续租 延长生命周期 strong
// __strong typeof (self) strongSelf = weakSelf;
weakVC = nil;
};//性能差
self.block();
3.传对象self作参数,已提供给代码块使用
//第三种方式 传递self 想:为什么会产生循环引用 self->block->self
self.block = ^(ViewController *vc) {
NSLog(@"%@",vc.name);
};
self.block(self);