block的内存管理
block的内存管理
1、没有使用局部变量的block内存存储在全局区
2、block内部使用局部变量的时候内存存在栈区
3、当block比昂两定义为属性的时候,必须使用copy修饰,retain无效,retain和assign会造成野指针问题
4、当对block进行copy操作的时候,此时block的内存区域为堆区
5、当不使用block是需要使用Block_Release()进行销毁
-(void)dealloc
{
Block_release(_colorBlock);
[super dealloc];
}
6、防止循环引用的问题
在非ARC下使用_block来解决block循环引用的问题
在ARC下使用_weak来解决循环引用的问题
- (void)done {
_secondVC= [[SecondViewController alloc] init];
__block FirstViewController *firstVC = self;
self.secondVC.block = ^(NSString *string) {
firstVC.label.text = string;
};
[self.navigationController pushViewController:self.secondVC animated:YES];
}
};