ARC中strong 和weak知识总结

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

 

posted @ 2015-11-21 17:02  航大大  阅读(277)  评论(0编辑  收藏  举报