iOS 5 中对属性的设置新增了strong 和weak关键字来修饰属性
strong 用来修饰强引用的属性;@property (strong) ViewSample * btn; 对应原来的 @property (retain) ViewSample * btn; 和 @property (copy) ViewSample * btn;weak 用来修饰弱引用的属性;
@property (weak) ViewSample * btn; 对应原来的 @property (assign) ViewSample * btn;__weak, __strong 用来修饰变量,此外还有 __unsafe_unretained, __autoreleasing 都是用来修饰变量的。
__strong 是缺省的关键词。__weak 声明了一个可以自动 nil 化的弱引用。__unsafe_unretained 声明一个弱应用,但是不会自动nil化,也就是说,如果所指向的内存区域被释放了,这个指针就是一个野指针了。__autoreleasing 用来修饰一个函数的参数,这个参数会在函数返回的时候被自动释放。可以在block中防止循环引用,无法释放的BUG。使用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