IOS Block循环引用的内存泄漏问题
来源:互联网 发布:赛迪智库待遇知乎 编辑:程序博客网 时间:2024/06/05 08:00
IOS 在MRC(非ARC)内存管理方式下,中如果Block调用了self的方法,那self的引用计数会被block +1, 如果处理不当会当值内存泄漏。
@implementation ISSChartLineViewController
- (void)dealloc
{
[_lineViewrelease];
[_changeDataButtonrelease];
[superdealloc];
}
- (void)viewWillAppear:(BOOL)animated
{
[superviewWillAppear:animated];
_lineView = [[ISSChartLineViewalloc] initWithFrame:self.view.boundslineData:[[ISSChartDataGeneratorsharedInstance]lineData]];
_lineView.didSelectedLines = ^ISSChartHintView *(ISSChartLineView *lineView,NSArray *lines,NSInteger index,ISSChartAxisItem *xAxisItem) {
return [selfgetHintView:lineView lines:lines index:index xAxisItem:xAxisItem];
};
//here need to optimization
[self.viewaddSubview:_lineView];
[self.viewbringSubviewToFront:self.changeDataButton];
}
如果这样写,回退到上一个界面的时候dealloc方式是不会调用的,因为self被block应用在,这样会导致self一直放在内存中,修改如下即可:
- (void)viewWillAppear:(BOOL)animated
{
[superviewWillAppear:animated];
_lineView = [[ISSChartLineViewalloc] initWithFrame:self.view.boundslineData:[[ISSChartDataGeneratorsharedInstance]lineData]];
__blocktypeof(self)weakSelf =self;
_lineView.didSelectedLines = ^ISSChartHintView *(ISSChartLineView *lineView,NSArray *lines,NSInteger index,ISSChartAxisItem *xAxisItem) {
return [weakSelfgetHintView:lineView lines:lines index:index xAxisItem:xAxisItem];
};
//here need to optimization
[self.viewaddSubview:_lineView];
[self.viewbringSubviewToFront:self.changeDataButton];
}
- IOS Block循环引用的内存泄漏问题
- 关于深入研究block 出现循环引用的问题和内存泄漏
- iOS Block的循环引用问题
- iOS中Block的循环引用问题
- iOS中block的循环引用问题
- ios block循环引用问题
- ios block循环引用问题
- ios block循环引用问题
- ios block循环引用问题
- ios- block循环引用问题
- ios- block循环引用问题
- iOS block循环引用问题
- iOS内存管理(4)--Block属性用copy修饰 & 避免循环引用的问题
- block 循环引用的问题
- Block的循环引用问题
- Block的循环引用问题
- block的循环引用问题
- Block的循环引用问题
- poj 1061 青蛙的约会(扩展欧几里德解不定方程)
- 创客是一种信仰:玩得起,才能创新
- 4.9 Constructing Headers and Footers in Table Views
- Ubuntu ibus 输入法之Skype不能输入中文
- java读写文件
- IOS Block循环引用的内存泄漏问题
- Radhat 自动挂载window共享
- 计算当前时间到星期N之间的时间差
- Java 二维数组
- 黑马程序员----JAVASE高级部分之JavaBean与内省
- IO流读写文件
- Activiti5完整版视频教程下载
- Debug清除BIOS密码的命令
- Web应用中session的实现机制