内存管理
2016-08-24 16:39
162 查看
之前看过一本书叫《Objective-C高级编程 iOS与OS X多线程和内存管理》,里面关于内存管理的讲解还是比较到位的。下面总结一下:
内存管理的思考原则我觉的可以称之为引用计数的思考原则,则在对象被使用时retainCount>=1,对象不使用时retaincount=0。当然说起来挺容易的,但是使用时还是需要遵循一定的章法的。
总结为以下四条
1.自己生成的对象,自己持有。
2.非自己生成的对象,自己也能持有。
3.自己持有的对象,一旦不再需要,就需要立即释放
4.非自己持有的对象,自己无法释放
详解
1.自己生成的对象,自己持有
即通过alloc,new,copy,mutablecopy等生成方法可以持有对象。生成对象的时候,retainCount=1
2.非自己生成的对象,自己也能持有
通过retain方法可以持有非自己生成的对象.此时retainCount加1
3.自己持有的对象,一旦不再需要,就需要立即释放
主要的释放方法release,此时retainCount会1
4.非自己持有的对象,自己无法释放
没有持有对象,那么你不能保证自己可以与引用计数一一对应,所以无法释放,否则可能会造成内存泄漏
内存管理的思考原则我觉的可以称之为引用计数的思考原则,则在对象被使用时retainCount>=1,对象不使用时retaincount=0。当然说起来挺容易的,但是使用时还是需要遵循一定的章法的。
总结为以下四条
1.自己生成的对象,自己持有。
2.非自己生成的对象,自己也能持有。
3.自己持有的对象,一旦不再需要,就需要立即释放
4.非自己持有的对象,自己无法释放
详解
1.自己生成的对象,自己持有
即通过alloc,new,copy,mutablecopy等生成方法可以持有对象。生成对象的时候,retainCount=1
2.非自己生成的对象,自己也能持有
通过retain方法可以持有非自己生成的对象.此时retainCount加1
3.自己持有的对象,一旦不再需要,就需要立即释放
主要的释放方法release,此时retainCount会1
4.非自己持有的对象,自己无法释放
没有持有对象,那么你不能保证自己可以与引用计数一一对应,所以无法释放,否则可能会造成内存泄漏
相关文章推荐
- 八大经典排序算法总结
- Visual studio 2013 community搭建 opencv2.4.10
- BZOJ3262: 陌上花开
- 【测试开发面试】阿里二面
- C++之string
- alias拦截器的使用
- [EmguCV|WinForm] 使用EmguCV內建直方圖工具繪製直方圖(Histogram)-直方圖(Histogram)系列 (1)
- Java学习片段
- 青春的我们
-  与 兼容性问题
- 有一个mainwindow.ui的界面类,有一个added.ui的界面类,如何将added.ui界面加入到另外一个界面呢?
- [置顶] 新浪云 上传图片
- 自定义view系列(3)--给自定义View添加点击事件
- JAVA序列化标准格式(XML、JSON)
- opengl es三角形例子
- 非常好用的List交集、并集
- Qt之模型/视图(自定义按钮)(重绘QStyleOptionButton)
- UVA11754 - Code Feat
- Oracle资料整理
- 这一次,我优化了37%的内存