IOS之weak
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