## 委托模式
> 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对象的保留属性名
- 用于分页的保留属性名
- 用于链接的保留属性名
- 错误对象中的保留属性名
- 属性顺序
- 示例
- 附录