ARC使用规则
1. ARC有效时 禁止使用retain或者release代码
2. 不能使用NSAllocateObject/NSDeallocObject代码
使用alloc方法会通过`NSAllocateObject`函数生成并持有对象,但是在ARC有效时禁止使用类似函数
3. 要遵守内存管理命名规则
- 在ARC和非ARC环境下,以
alloc
、new
、copy
、mutableCopy
开头的方法 应该返回调用者应当持有的对象 - 在ARC环境下 以
init
开头的方法必须为构造器方法
4. 不要显式调用dealloc
在ARC有效时,不需要调用`super dealloc`
5. 用@autoreleasepool 代替 NSAutoreleasePool
在ARC无效时也推荐使用@autoreleasepool block
6. 不能使用NSZone
7. 对象型变量不能作为C语言结构体成员
因为OC变量由编译器负责ARC的生命周期,但是C语言中没有对结构体成员的生存周期。因此,如果要在结构体中使用OC变量,可以将变量显式转换为`void *`类型(见下一条),或者使用`__unsafe__retained`修饰符(使用此修饰符表示其不属于编译器内存管理的对象)
8. 显式转换id和void *
详情见CoreFoundation和Foundation对象转换