ARC工作原理
ARC是OC编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只不过是在代码编译时为你自动在合适的位置插入release或者autorelease
不调用 retain release autorelease retainCount
可重写dealloc但是不可以调用[super dealloc]
强指针__strong
弱指针__weak
ARC对象释放判断的依据:对象没有强指针指向对象会立即释放内存空间
ARC下多对象内存管理
在ARC机制下不能使用retain应该使用strong
还可使用weak
@property(nonatomic,weak)Dog *dog;
weak指针常见用法是在两个对象间存在包含关系时:
对象1有一个strong指针指向对象2,并持有它,而对象2中只有一个weak指针指向对象1,从而避免了循环持有。
ARC使用特点以及注意事项
@property参数 strong weak assign
注意
ARC中只要弱指针指向的对象不存在,就直接把弱指针做清空(赋值nil)操作。
__weak Student *stu=[Student new];//创建就被销毁
|
|