## 委托模式
> Tip
> 委托對象不應該被 `retain`
實現委托模式的類應:
1. 擁有一個名為 `delegate_` 的實例變量來引用委托。
1. 因此,訪問器方法應該命名為 `delegate` 和 `setDelegate:`。
1. `delegate_` 對象不應該被 `retain`。
## 模型/視圖/控制器(MVC)
> Tip
> 分離模型與視圖。分離控制器與視圖、模型。回調 API 使用 `@protocol`。
- 分離模型與視圖:不要假設模型或者數據源的表示方法。保持數據源與表示層之間的接口抽象。視圖不需要了解模型的邏輯(主要的規則是問問你自己,對于數據源的一個實例,有沒有可能有多種不同狀態的表示方法)。
- 分離控制器與模型、視圖:不要把所有的 “業務邏輯” 放進跟視圖有關的類中。這使代碼非常難以復用。使用控制器類來處理這些代碼,但保證控制器不需要了解太多表示層的邏輯。
- 使用 `@protocol` 來定義回調 API,如果不是所有的方法都必須實現,使用 `@optional``(特例:使用 Objective-C 1.0 時,``@optional` 不可用,可使用類別來定義一個 “非正規的協議”)。
- Google 開源項目風格指南 (中文版)
- C++ 風格指南
- 0. 扉頁
- 1. 頭文件
- 2. 作用域
- 3. 類
- 4. 來自 Google 的奇技
- 5. 其他 C++ 特性
- 6. 命名約定
- 7. 注釋
- 8. 格式
- 9. 規則特例
- 10. 結束語
- Objective-C 風格指南
- Google Objective-C Style Guide 中文版
- 留白和格式
- 命名
- 注釋
- Cocoa 和 Objective-C 特性
- Cocoa 模式
- Python 風格指南
- Google Python 風格指南 - 中文版
- 背景
- Python語言規范
- Python風格規范
- 臨別贈言
- JSON 風格指南
- 簡介
- 定義
- 一般準則
- 屬性名準則
- 屬性值準則
- 屬性值數據類型
- JSON結構和保留屬性名
- 頂級保留屬性名稱
- data對象的保留屬性名
- 用于分頁的保留屬性名
- 用于鏈接的保留屬性名
- 錯誤對象中的保留屬性名
- 屬性順序
- 示例
- 附錄