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

来源:4-5 swift属性之延迟属性

weibo_之安z_0

2016-06-08 14:23

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

写回答 关注

3回答

  • 梁华建
    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,防止循环应用的产生

    会产生循环应用的问题

    weibo_...

    额,oc的我了解,我在问关于swift的lazy property闭包中会有有循环引用问题发生

    2016-06-16 11:41:16

    共 1 条回复 >

玩儿转Swift 2.0(第三季)

玩儿转Swift面向对象,对swift语言的掌握达到中等偏上水平

13968 学习 · 41 问题

查看课程

相似问题