您的位置:首页 > 移动开发 > IOS开发

iOS开发 ARC下造成内存泄露的问题

2015-06-17 15:14 471 查看
新到公司,着手准备跟进项目,但是发现内存越来越大,项目是arc的,于是在某个viewcontroller中加入了dealloc方法打断电,发现viewcontroller果然没有释放,找啊找:

先是把所有的block中用到的self换成了weakself,结果还是不行;

又用instrument看,搞了半天发现这工具还是特么的鸡肋,跟我显示




然后我就不能懂了,去stackoverflow问老外,老外啪啪啪给我解释了一通,原来是个系统库生成的单例,一直不会释放的,叫我不要怪instruments,它是无辜的。。。

然后我只有最笨的办法了,一段一段地删除代码,看什么时候会进入dealloc,找着找着发现这个viewcontroller的superviewcontroller 的superviewcontroller中定义了一个内部全局变量

[code]@interface GrandfatherViewController()
{
    id        _leftTarget;
}

@implementation GrandfatherViewController
...
-(void) xxxMethord:(id)target{
    _leftTarget = target;
}
...
@end


这个xxxmethord是被GrandfatherViewControllere 的子类superviewcontroller饶了几个弯调用的,而且传入的参数是self。类似的内部变量持有self的问题大概存在两三处,解决掉这个问题之后果然起作用了。dealloc终于被调用了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: