Cocoa 模式
委託模式
Tip
委託對像不應該被 retain
實現委託模式的類應:
- 擁有一個名為
delegate_
的實例變量來引用委託。 - 因此,訪問器方法應該命名為
delegate
和setDelegate:
。 delegate_
對像不應該被retain
。
模型/視圖/控制器(MVC)
Tip
分離模型與視圖。分離控制器與視圖、模型。回調 API 使用 @protocol
。
- 分離模型與視圖:不要假設模型或者數據源的表示方法。保持數據源與表示層之間的接口抽像。視圖不需要瞭解模型的邏輯(主要的規則是問問你自己,對於數據源的一個實例,有沒有可能有多種不同狀態的表示方法)。
- 分離控制器與模型、視圖:不要把所有的 「業務邏輯」 放進跟視圖有關的類中。這使代碼非常難以復用。使用控制器類來處理這些代碼,但保證控制器不需要瞭解太多表示層的邏輯。
- 使用
@protocol
來定義回調 API,如果不是所有的方法都必須實現,使用@optional``(特例:使用 Objective-C 1.0 時,``@optional
不可用,可使用類別來定義一個 「非正規的協議」)。