zoukankan      html  css  js  c++  java
  • 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

    可以选择,但是别选择放弃
  • 相关阅读:
    noip模拟赛 寻宝之后
    noip模拟赛 剪纸
    noip模拟赛 天天和不可描述
    noip模拟赛 罪犯分组
    noip模拟赛 天天寄快递
    Uva10562
    Uva10305 Ordering Tasks
    Uva 816 Abbott's Revenge
    Uva1103 Ancient Messages
    Uva297 Quadtrees
  • 原文地址:https://www.cnblogs.com/hangdada/p/4984122.html
Copyright © 2011-2022 走看看