ARC机制:
1、指针分类:ARC机制下引入强指针和弱指针,分别用__strong和__weak修饰。
2、ARC的工作原理:ARC是编译时特性,即用户不再添加release和retain方法,而是由编译器代替我们在合适的位置添加,底层还是,其实还是MRC机制。
3、ARC的准则:只要没有强指针指向对象,就会被销毁,并且将指向对象的所有弱指针设为nil。
4、ARC下的循环引用问题:一个成员对象设为weak,一个成员对象设为strong。
5、ARC使用注意:
1>__weak Person *p = [Person new]; // 不能将创建后的对象使用弱指针指向,因为创建Person对象后,没有强指针指向,马上销毁,并且弱指针p被置为nil。
2>不能再使用release、retain、autorelease、retainCount方法。
3>可以重写dealloc方法,但是不能像MRC机制下手动调用该方法。
4>ARC机制下@property参数中没有retain,而是使用strong和weak来代替。
6、ARC机制下多对象的内存管理的释放顺序:
@interface Person:NSObject
@property(strong) Dog *dog;
@end
Person *p = [Person new];
Dog *d = [Dog new];
p.d = d;
d = nil;
p = nil;
// p=nil,Person对象没有强指针指向,被释放,dog变量被销毁,Dog对象没有强指针指向,被释放。
7、ARC机制下兼容MRC的东西
在使用MRC机制的文件后面,添加代码:-fno-objc-arc |
|