2012-02-24 37 views

回答

6

不使用-init中的存取器的唯一原因是您的對象未完全初始化,並且存取器可能依賴於它。如果你有一個覆蓋訪問器方法的子類,這種情況只會發生。

解除分配時存在對稱問題,因爲重寫的訪問器可能依賴於未在部分解除分配的對象上調用。還有一個問題,您可能會發出虛假的KVO通知。

這適用於正確封裝的核心。子類不需要關心超類的實現細節。

8

我從來沒有在初始化器中使用訪問器有任何問題。也許這取決於你在setter和getters中有多少魔法 - 如果訪問器做得太聰明,在初始化器中使用它們時可能遇到麻煩。

現在我想到了,我甚至使用dealloc中的訪問器。再次,沒有問題。如果有人正在觀察一個物體,他應該確保該物體不會首先被釋放。所以,除非有人提出了一個引人注目的反駁,否則我想你可能會嘗試使用initdealloc中的訪問器,看看它是如何工作的。

相關問題