您的位置:首页 > 其它

OC 内存管理 --个人理解

2015-12-06 19:05 218 查看
OC 有垃圾回收机制,但是只是适用于Mac端开发,并且Xcode 默认是没有开启垃圾回收机制的,如果做Mac端开发,需要自己手动开启。

iOS端 开发 是 没有垃圾回收机制的,那么iOS下的内存是怎么管理的呢?

那么,我个人在一年多的开发经验中,总结了自己的一些理解,若有错误,还请纠正。

1、MRC下,OC的内存管理遵循三条原则:

原则一原则 二原则 三
只要是alloc/retain/copy 的都使引用计数加1通过便利构造器方法得到的对象,我们不需要管理他的内存,因为他的内部已经对其进行了管理alloc/retain/copy 要和 release的次数一致,也就是要保证你创建的或拥有的,你必须保证将其释放掉。

在MRC下 这三条原则适用所有的情况。

2、ARC 适用的 自动释放池(autoreleasepool)

编译器在编译阶段已经自动为我们的对象 添加上了 retain/copy 以及release ,autorelease,所以我们不需要去管理。

需要注意的一点就是,autorelease 是在 出了 自动释放池之后 才 释放对象。

在 dealloc 中,我们需要进行处理的是,强引用的delegate,定时器实例,以及添加的观察者(虽然释放了该对象,但是并没有移除该对象的观察者关系,所以需要我们自己释放)

以上 是我自己 目前的理解,若有不周,欢迎纠正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: