你們知道,self.property
實際上是調用了類的 [self property]
方法,因此這實際上是有一層方法調用的隱藏,不少時候,咱們須要延遲初使化一個類成員的時候,就會把這個成員的初使化方法寫在這個 [self property]
方法的實現中。html
那麼問題來了,當你在閱讀別人代碼時,看到 self.property
的時候,你會想:這裏會不會有一些隱藏的函數實現?因而你須要跳轉到其方法實現中去查找。可是在實際開發中,大部分的 property 實際上是使用編譯器自動生成的 Getter 和 Setter 方法,因而你會找不到實現,這個時候,你才知道:「哦,原來這段代碼並無作自定義的成員初使化工做」。ios
這種默認的隱藏在代碼中多了,會影響代碼的閱讀和維護。其實大部分的類成員變量都須要在類初使化方法中賦值,大部分的 UIViewController 的成員變量,都須要在 viewDidLoad
方法中賦值。那既然這樣,不如直接在相應的方法中用一個名爲 setupProperty
方法直接進行初使化。這樣的好處是,代碼的可讀性更好了,self.property
只有須要延遲初使化的狀況下才被使用。git
參考連接:objective-c
1.http://blog.devtang.com/2015/03/15/ios-dev-controversy-1/spring
2.https://touchspring.gitbooks.io/document/content/iOS/objective-c_%E5%8F%8D%E5%B0%84%E7%AF%87.html函數