1、Object-C的内存管理机制-自动引用计数
在LLVM编译器中设置ARC为有效状态,就无需再次键入retain或者是release代码。
使用ARC的前提
- 使用Xcode4.2或以上版本
- 使用LLVM编译器3.0或以上版本
- 编译器选项中设置ARC为有效状态
ARC的好处
无需手动键入retain或者是release代码,让编译器来自动管理,这在降低程序崩溃、内存泄漏等风险的同时,很大程度减少了程序开发的工作量。编译器完全清楚目标对象,并能立刻释放那些已经不被使用的对象。如此这样,程序将具有可预测性、流畅性、大幅度性能提升。
内存管理应该有的思考方式
- 自己生成的对象,自己所持有
- 非自己生成的对象,自己也能持有
- 不再需要自己持有的对象时释放
- 非自己持有的对象无法释放
Object-C中是 有Cocoa框架中Foundation框架类库的NSObject类担任内存管理职责。
alloc------>allocWithZone:(NSZone *)z----->NSAllocateObject(self,o,z)---->NSZoneMalloc(zone,size)
NSZone 是防止内存碎片化引入的结构,对内存分配的区域本身进行多重化管理,根据使用对象的目的。对象的大小分配内存,从而提高了使用内存管理 的效率。
网友评论