关于iPhone内存管理总结 |
本文标签:iPhone 内存 iPhone内存管理总结是本文要介绍的内容,iPhone里采用Objective-C开发,相对来说,只要遵循了Apple的一些编程规则,比C++的内存管理来的容易些,但是也有很多需要注意的地方,一旦出现内存相关的错误,调试也是个很头疼的问题 。 1. 比如出现 EXC_BAD_ACCESS 错误,给你的错误提示就这个,如何根本没法知道哪里错误了,其实还是有方法知道的, 做如下设置:
添加如下四个参数
并都设置为YES 。具体如下图: 这个时候,如果有如下一段代码:
再Debug窗口会有如下的提示
虽然也能大致判断是哪种类型的变量重复释放了,但信息还不够多,当项目大,源码比较多的时候,也不太方便定位, 在console窗口运行如下命令可以得到更多信息:
输入命令:
就会出现更多的信息:
这个时候就知道具体哪个函数出先问题了,从这里可以看到main里NSData出现问题了 。 2、NSArray等集合类的实用问题 。 如下面的代码
就会导致重复释放内存问题,因为rt2,获取的是一个对象的指针,如果已经释放了的话,rt在释放的话,就重复了,为了遵循谁Init谁Release的原则,rt2就不应该Release 。 3、init 和 Release 的问题 。 凡是对象通过Init的方法生成的对象,都需要自己负责Release 。 凡不是通过Init的方法生成的对象,不需要负责Release.如[NSString StringWithFormat]方法生成的对象就不需要自己Release,因此自己定义函数,返回一个类的时候,一定要设置为autoRelease 。这样调用的人就不用操心是否需要释放对象了 。 4、AutoReleasePool里最好不要将AutoRelease对象赋值给其它对象,否则离开这个作用域后,对象将会Release掉 。 小结:关于iPhone内存管理总结的内容介绍完了,希望通过本文的学习能对你有所帮助,如果你对iphone开发很有兴趣的话,请到iphone开发频道进行更多的学习 。 |