zoukankan      html  css  js  c++  java
  • iOS 关于修饰代理用weak还是assign

    对于weak:指明该对象并不负责保持delegate这个对象,delegate这个对象的销毁由外部控制。

    对于strong:该对象强引用delegate,外界不能销毁delegate对象,会导致循环引用(Retain Cycles)

    对于assing:也有weak的功效。但是网上有assign是指针赋值,不对引用计数操作,使用之后如果没有置为nil,可能就会产生野指针;而weak一旦不进行使用后,永远不会使用了,就不会产生野指针。




    原文链接:http://www.jianshu.com/p/66b54e3a3960

     
     
    之前不停应用的是assign,本日调试一段代码的时间,发明顺序会crash失落,报错EXC_BAD_ACCESS 经由一番研讨,发明若是应用 @property (nonatomic, assign, readwrite) id delegate; 声明一个delegate之前一直使用的是assign,今天调试一段代码的时候,发现程序会crash掉,报错EXC_BAD_ACCESS


    经过一番研究,发现如果使用

    @property (nonatomic, assign, readwrite) id delegate;

    声明一个delegate,那么即便delegate指向的对象销毁了,delegate中依然会保存之前对象的地址

    即,delegate成为了一个野指针...


    而使用weak,则不会有上述问题,当delegate指向的对象销毁后,delegate = nil,

    所以答案就是,使用weak。

  • 相关阅读:
    OpenCV中的绘图函数
    整理不错的opencv博客
    opencv中的函数
    这是一个学习前端技术的网站
    HDU1520 Anniversary party(树形DP入门)
    CF1255C League of Leesins(图论)
    HDU4725 The Shortest Path in Nya Graph(最短路分层)
    1288C Two Arrays
    CF1294D MEX maxiszing
    CF1295C Obtain the String
  • 原文地址:https://www.cnblogs.com/it-k-50/p/6093454.html
Copyright © 2011-2022 走看看