static怎么的不会造成内存泄漏,ios
2017-06-14
展开全部
ios怎么查看内存泄露,有以下几种方法供大家参考:
1.静态分析
通过静态分析可以最初步的了解到代码的一些不规范的地方或者是存在的内存泄漏,这是第一步对内存泄漏的检测。当然有一些警告并不是关心的可以略过。
2.通过instruments来检查内存泄漏
这个方法能粗略的定位在哪里发生了内存泄漏。方法是完成一个循环操作,如果内存增长为0就证明程序在该次循环操作中不存在内存泄漏,如果内存增长不为0那证明有可能存在内存泄漏,当然具体问题需要具体分析。
3.代码测试内存泄漏
在做这项工作之前要注意一下,在dealloc的方法中是否已经释放了该对象所拥有的所有对象。观察对象的生成和销毁是否配对。准确的说就是init(创建对象的方法)和dealloc是否会被成对触发(简单说来就是走一次创建对象就有走一次dealloc该对象)。
下面是遇到的一些比较隐秘的造成内存泄漏的情况:
1.两个对象互相拥有:也就是说对象a里面retain/addSubview了b对象,b对象同时也retain/addSubView了a对象。注意:delegate不要用retain属性,要用assign属性也会导致互相拥有。
2.有时候需要用removeFromSuperView来释放:具体说明,也许a对象拥有一个b对象,b对象add到了c对象上,而在设计中b对象的生命周期应该和a对象相同;这时候只一句[b release]/self.b = nil是不能把b对象释放掉的(一般情况下release会使其retainCount-1,[super dealloc]会再次将所有subView的retainCount-1,而b并不是a的subView,所有最后的一次-1没有了);所以需要在之前加上[b removeFromSuperView]。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询