2三、編寫代碼要遵循Cocoa API約定
2四、洞悉實例變量設計模式
- 一、實例變量的命名規範是使用小寫字符衝,不包含標點符號和特殊字符。
- 二、只加入一些絕對必要的實例變量,不然容易形成大的開銷。
- 三、永遠不要將變量設置爲@public,由於這違反了封裝的原則。
- 四、確保類基本屬性對應的實例變量有存儲方法。
2五、透徹瞭解屬性的裏裏外外安全
- 一、屬性的動態性定義,需用關鍵字@dynamic。屬性動態性是相對於@synthesis來講的,不是由編譯器自動生成setter或getter,而是在運行時動態添加的setter和getter.
- 二、屬性採用動態性,與採用靜態性相比,能夠簡化代碼的編寫,便於代碼的管理。
- 三、默認狀況下,可寫屬性使用的實例變量被稱爲_propertyName。若是想要使用的實例變量不用名,須要在實現中指示編譯器合成的變量。
- 四、利用類擴展可實現對屬性的「篡改」。
2六、存取方法是良好的類接口必要組成部分
2七、明曉類公共領域的方法都是虛方法函數
- 一、在Objective-C中,全部的方法都是虛方法。
- 二、實現純虛方法依賴正式協議來實現
- 三、協議並非真正的類,他只能聲明方法,不能添加數據
- 四、非正式協議並非真正的協議,它的代碼沒有約束力
2八、初始化仍是解碼取決因而否支持歸檔和解檔編碼
- 一、類的對象支持歸檔和解檔,該類必須遵循NSCoding協議;必須實現對象進行編碼(encodeWithCoder:)和解碼(initWithCoder:)的方法
- 二、類的初始化方法和initWithCoder:在角色上並行性存在例外
2九、利用鍵-值機制訪問類的私有成員變量和方法設計
- 一、在Objective-C中,類的成員變量或方法是沒有絕對私有的,能夠藉助「編譯運行時」機制來實現對他們的訪問
- 二、KVC和KVO在定製子類的設計時特別重要
- 三、KVC、KVO和KVB都支持遍歷
- 四、KVC主要經過isa指針來實現其內部查找定位。KVO其設計基於設計模式中的「觀察者模式」。KVB和KVO最明顯的使用場景就是在一些界面實時顯示很強的地方。
30、淺複製適宜指針而深複製適宜數據
3一、明智而審慎地使用NSCopying指針
- 一、基類沒有實現NSCopying,那麼子類的實現必須複製它所繼承的實例變量,以及那些在類中聲明的實例變量,最安全的方式是使用alloc、init...和set方法
- 二、類繼承了NSCopying的行爲,並聲明瞭額外的實例變量,那麼也須要實現copyWithZone;
- 三、若是基類使用了或者有可能使用過NSCopyObject,那麼必須使用有別於alloc和init...函數的狀況,用不一樣的方式處理實例變量。
3二、使用協議來實現匿名對象的提供code
- 一、採用協議,可靈活實現。實現抽象不該該依賴於細節,而細節應依賴於抽象,下降「聲明」和「實現」的耦合度。
- 二、設計程序採用協議,可減小繼承類的複雜性。