你的dealloc方法 为什么不走?

来源:互联网 时间:2017-01-22


由于工程里加了全屏的侧滑手势, 那么原本在点返回按钮时做的事情,只能放在dealloc里执行了. (原本只能在点返回按钮做的事情....只能将哪个界面的控制器侧滑返回禁用了....).


如果你的dealloc方法 不走 那么你的控制器一定还存在 没有释放掉, 那么就会引起内存泄露...


如果你的dealloc方法 不走 那么
1, 请检查下是否有定时器,如果有先将定时器移除...
2, 检查下代理有没有强引用..
3, 最常见的block的循环引用!!! block很容易造成循环引用
a,首先建议看一下AFN中的一段经典代码


//创建__weak弱引用,防止强引用互相持有
__weak __typeof(self)weakSelf = self;
AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) {
//创建局部__strong强引用,防止多线程情况下weakSelf被析构
__strong __typeof(weakSelf)strongSelf = weakSelf;
strongSelf.networkReachabilityStatus = status;
if (strongSelf.networkReachabilityStatusBlock) {
strongSelf.networkReachabilityStatusBlock(status);
}};

b, 其次 请检查下 block内部有没有引用实例变量. block内部不要用下划线去访问成员变量, 要用weakSelf.instanceVariable




相关阅读:
Top