2019-04-16

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 是防止内存碎片化引入的结构,对内存分配的区域本身进行多重化管理,根据使用对象的目的。对象的大小分配内存,从而提高了使用内存管理 的效率。

你可能感兴趣的:(2019-04-16)