Swift - deinit 方法中的 self

sru*_*017 2 swift

在 swift deinit 方法中使用 self 是一种好习惯吗?在目标 C 中,我们避免在 init 和 dealloc 方法中使用 self。同样适用于swift吗?

Sul*_*han 5

在90%的病例必须使用selfdeinit。在 Swift 和 Objective-C 中。

这实际上是该方法的全部意义——在解除分配之前访问该对象的最后机会。

您应该避免的是self从存储到另一个对象deinit,而不是访问self

此外,在 Objective-C 中,有些人试图避免使用属性 setter 和 getter,initdealloc避免可能隐藏在其中的危险副作用,他们直接访问 ivars(_prop = nil而不是self.prop = nil)。这在 Swift 中实际上是不可能的,因为没有 ivars。然而,Swift 在这方面要安全得多。请注意,_prop = nil在 Objective-C 中仍然访问self. 这只是self->_prop = nil. 我们正在避免属性,而不是self.