1.规则
1.1ARC是Ios5之后的新特新,完全消除手动管理内存的烦恼,编译器会自动在适当的地方插入适当的retain、releas、autorelease语句
1.2ARC是编译器特性,不是IOS运行时特性,并不是类似其他语言中的垃圾收集器,因此ARC和手动内存管理性能是一样的。有时还可以提高效率。
1.3ARC 中管理规则是只要有一个强指针(Strong)变量指向对象,对象就会保持在内存中;
1.4函数执行完,局部变量就会被销毁
2.强指针和弱指正均适用于OC对象
强指针:默认所有的实例变量和局部变量都是Strong指针;
弱指针:指向的对象被回收后,弱指针会自动变为nil指针,不会引发野指针错误
3.使用注意
3.1.不能调用release、retain、autorelease、retainCount
3.2.可以重写dealloc,但是不能调用[super dealloc]
3.3.@property:想长期拥有某个对象,应该用strong,其他对象用weak
3.4.其他基本数据类型依然使用assign
3.5.ARC解决两端相互引用时,一端用strong,一端用weak
非ARC解决两端互相引用,一端用retain,一段用assign
4.使用总结
4.1*IOS控件
4.1.1如果是用Stroyboard拖线,控件用weak
4.1.2如果用代码创建界面,控件可以用strong
4.2*自定义对象需要使用strong(例如:person类)
*字符串NSString,使用copy
*数字型的int,使用assign
5.UI中内存释放
IOS中释放对象是从视图控制器开始,view ,subView - > UILabel - >_noLabel(weak)
控制器被释放(_noLael(strong)属于视图控制器,也会被释放)—>view(释放)->subView->UILabel