iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性
strong 用来修饰强引用的属性;
@property (strong) SomeClass * aObject;对应原来的
@property (retain) SomeClass * aObject; 和 @property (copy) SomeClass * aObject;
weak 用来修饰弱引用的属性;
@property (weak) SomeClass * aObject;
对应原来的
@property (assign) SomeClass * aObject;
__weak, __strong 用来修饰变量,此外还有 __unsafe_unretained, __autoreleasing 都是用来修饰变量的。
__strong 是缺省的关键词。
__weak 声明了一个可以自动 nil 化的弱引用。
__unsafe_unretained 声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了。
__autoreleasing 用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。
使用ARC时,需要遵循一定的规则:
- 不能使用retain/release/retainCount/autorelease方法
- 不能使用NSAllocateObject/NSDeallocateObject方法
- 不能显示的调用dealloc方法
- 使用@autoreleasepool块代替NSAutoreleasePool
- 不能使用NSZone(防止内存碎片化而引入的结构)
- 显示转换"id"和"void *"
Beginning ARC in iOS 5 Tutorial Part 1: http://www.raywenderlich.com/zh-hans/20855/ios-5-arc-%E5%85%A5%E9%97%A8-13