Swift - didSet 中的弱自我

Swift - weak self in didSet

我很少看到有人在 didSet 中使用 [weak self]。这有什么原因吗?

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

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

无论我将 [weak self] in 放在 [1] 还是 [2],我仍然得到错误:Use of unresolved identifier weak

这是为什么?将 [weak self] 用于 didSet 是否违法?

此致,

didSet 不是闭包,不能使用闭包语法。

没有理由在那里使用 weak selfdidSet 处理程序不会像方法不创建所有权循环那样创建所有权循环。

不要那样做。

使用 [weak self] 是没有意义的,因为 didSet 不会捕获任何东西,也永远不会创建保留循环。