在swift deinit方法中使用self是一种好习惯吗?在目标C中,我们避免在init和dealloc方法中使用self。同样适用于swift?
在90%的情况下,你必须在self
中使用deinit
。 Swift和Objective-C都有。
这实际上是该方法的重点 - 在重新分配之前访问该对象的最后机会。
你应该避免的是将self
存储到deinit
的另一个对象,而不是访问self
。
另外,在Objective-C中,有些人试图避免在init
和dealloc
中使用属性设置器和getter来避免可能隐藏在其中的危险副作用,而是直接访问ivars(_prop = nil
而不是self.prop = nil
)。这在Swift中实际上是不可能的,因为没有ivars。但是,Swift在这方面更安全。请注意,Objective-C中的_prop = nil
仍然访问self
。这只是self->_prop = nil
的简短语法。我们正在避免财产,而不是self
。