码迷,mamicode.com
首页 > 其他好文 > 详细

循环引用不释放控制器

时间:2017-08-09 15:37:27      阅读:119      评论:0      收藏:0      [点我收藏+]

标签:ssi   方法   blog   避免   循环引用   color   干货   property   __strong   

理论不介绍,直接上干货~

一、检测

检测控制器是否被释放,可以检测是否调用了-dealloc生命周期方法。

二、修复

1、因为NSTimer没有释放的原因
避免方式:记得将NSTimer对象timerObj失效与置空。
[self.timerObj invalidate];
self.timerObj = nil;
 
2、成为别人的委托对象,却把自己给搭进去出不来
避免方式:声明delegate时请用assign(MRC)或者weak(ARC)。
 
3、block环
避免方式:
【1】如果是属性
@property (nonatomic, assign) NSInteger *age;

在block外面:__weak typeof(self) weakSelf = self;

在block里面:weakSelf.age = 18;
 
【2】如果是成员变量
{
    NSString *_name;
}
在block外面:__weak typeof(self) weakSelf = self;
在block里面:__strong typeof(weakSelf) strongSelf = weakSelf;
                       strongSelf->_name = @“Ming”;

循环引用不释放控制器

标签:ssi   方法   blog   避免   循环引用   color   干货   property   __strong   

原文地址:http://www.cnblogs.com/cchHers/p/7325186.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!