问答详情
源自:4-5 swift属性之延迟属性

在lazy property的闭包中会不会有引用循环的问题呢?

根据oc block的经验,通常我们调用闭包时都会把self声明为unower,lazy property的闭包会不会也有引用循环的问题?

提问者:weibo_之安z_0 2016-06-08 14:23

个回答

  • 梁华建
    2019-01-14 14:39:19

    计算属性的get一般用于使用自身其他属性计算得到的值 set就是用于得到的新value改变其他属性的值 显然需要受到双方制约的时候才会使用计算属性

    通常只会声明get属性 这时候你就无法改变这个计算属性啦 否则你就破坏了这个计算属性的意义 显然 如果你重写其set方法的时候用self调用自身 妄想改变这个计算属性的值(显然这也就使得计算属性受到外界影响,而不是通过类内部其他属性计算得出) 系统就会爆出警告说你这样会自己调用自己 (我试过这样调用 无限循环卡死了。。。) 



  • 梁华建
    2019-01-14 14:24:40

    貌似这个属性一般只调用一次 而且不会调用自身属性的值 他是用其他属性算出自身属性

    如果在计算属性中的Set函数self.value = newValue 就会出现循环引用的警告了

  • iwasee
    2016-06-15 09:42:39

    在OC的block中使用self一般先会转换成weak吧,

    还是需要说明一下self的weak或者unower,防止循环应用的产生

    会产生循环应用的问题