編寫高質量代碼-OC 第4章 設計與聲明

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

  • 一、採用協議,可靈活實現。實現抽象不該該依賴於細節,而細節應依賴於抽象,下降「聲明」和「實現」的耦合度。
  • 二、設計程序採用協議,可減小繼承類的複雜性。
相關文章
相關標籤/搜索