iOS内存管理(一)ARC内存管理原则

ARC是自iOS 5之后增加的新特性,基本消除了手动管理内存的烦琐,编译器会自动在适当的地方插入当的retain、release、autorelease语句。你基本不再需要担心内存管,这里说的是基本,不是全部,为什么呢,后面的会讲到。

  • ARC是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC),而是编译器特性。这是面试的时候经常被问到
  • 实现原理:
    RAC通过控制变量的作用域和强弱指针的限制,
  • 规则:
    ARC的规则:只要有一个强指针变量只想对象,对象就会保持在内存中不会被释放
  • 强/弱指针:
    ARC模式下默认所有实例变量都是强指针,强指针持有对象
    弱指针指向的对象呗回收后,弱指针回制动复制为nil

在ARC有效的情况下编译源代码,必须遵守一定的规则。下面的就是具体的ARC的具体规则。

  • 不能使用使用retain/release/retainCount/autorelease
  • 不能使用NSAllocateObject/NSDeallocateObject
  • 必须遵守北村管理方法命名规则
  • 不要显示调用dealloc
  • 使用@autoreleasepool块替代NSAutoreleasePool
  • 不能使用区域(NSZone)
  • 对象型变量作为c语言结构体(struct/union)的成员
  • 显示转换“id”和“void”

你可能感兴趣的:(iOS内存管理(一)ARC内存管理原则)