斯威夫特 - 在didSet中弱自我

qua*_*yen 5 weak-references swift didset

我很少看到有人[weak self]在使用didSet.是否有一个原因?

我尝试[weak self]在我didSet的变量中使用:

var data: Dictionary<String, Any>! { // [1]
        didSet { [2]
            self?.layoutSubviews()
        }
    }
Run Code Online (Sandbox Code Playgroud)

要么我放在[weak self] in[1]或[2],我仍然得到错误:Use of unresolved identifier weak

这是为什么?使用它是非法[weak self]didSet吗?

问候,

Sul*_*han 15

didSet 不是闭包,你不能使用闭包语法.

没有理由在weak self那里使用.一个didSet处理程序不会以同样的方式方法不创建他们创造所有权周期.


vad*_*ian 6

不要那样做.

使用它是荒谬的,[weak self]因为didSet它不捕获任何东西,永远不会创建保留周期.