《Cocoa设计模式》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(美)布克,(美)雅克曼著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2010
  • ISBN:9787111317401
  • 页数:336 页
图书介绍:Cocoa是苹果的面向对象开发环境,用来生成 Mac OS X 的应用程序。主要的开发语言为 Objective-C,是Mac下进行开发必不可少的开发环境。本书从众多模式之母MVC模式开始(MVC也是Mac和iPhone开发的核心),详细介绍了在Cocoa开发中可能遇到的各种核心设计模式,并给出了实用的例子和有用的代码进行阐释说明。本书刚出版就登上了Amazon图书4000名,开发类75名的榜单,具有很大的上升潜力。

第一部分 一种可控制一切的模式 2

第1章 模型-视图-控制器 2

1.1 Cocoa中的MVC 3

1.1.1 模型子系统的核心数据支持 3

1.1.2 视图子系统的应用程序工具箱支持 4

1.1.3 控制器子系统的应用程序工具箱支持 6

1.1.4 Cocoa的文本架构 7

1.1.5 Cocoa的文档架构 7

1.1.6 Cocoa编写脚本的能力 10

1.1.7 Cocoa的偏好窗格架构 11

1.1.8 Quartz Composer的架构 11

1.1.9 QTKit的架构 12

1.2 小结 12

第2章 分析和应用MVC 13

2.1 非MVC设计 13

2.2 MVC设计 17

2.3 小结 21

第二部分 基础模式 24

第3章 两阶段创建 24

3.1 动机 24

3.2 解决方案 25

3.2.1 分区 26

3.2.2 初始化已分配的内存 26

3.2.3 实现指定的初始化方法 27

3.2.4 在初始化方法中使用分区 29

3.2.5 创建临时实例 30

3.3 Cocoa中的示例 31

3.4 后果 35

第4章 模板方法 36

4.1 动机 36

4.2 解决方案 36

4.2.1 默认模板方法 38

4.2.2 利用模板方法进行设计 38

4.3 Cocoa中的示例 38

4.3.1 使用-drawRect:模板方法 39

4.3.2 其他Cocoa模板方法 39

4.4 后果 42

第5章 动态创建 43

5.1 动机 43

5.2 解决方案 43

5.2.1 使用动态创建 43

5.2.2 用动态创建实现插件架构 49

5.3 Cocoa中的示例 50

5.4 后果 50

第6章 类别 52

6.1 动机 52

6.2 解决方案 52

6.2.1 非正式协议 55

6.2.2 匿名类别 56

6.2.3 代码组织 57

6.2.4 何时使用类别与子类化 57

6.3 Cocoa中的示例 57

6.3.1 把类别用于组织 58

6.3.2 把类别用于非正式协议 58

6.3.3 把类别用于框架划分 60

6.4 后果 61

6.4.1 方法冲突 61

6.4.2 替换方法 61

6.4.3 软件维护 62

第7章 匿名类型和异类容器 63

7.1 动机 63

7.2 解决方案 63

7.2.1 匿名类型 64

7.2.2 赋值 66

7.2.3 异类容器 67

7.3 Cocoa中的示例 68

7.4 后果 68

第8章 枚举器 70

8.1 动机 70

8.2 解决方案 70

8.2.1 使用枚举器对象 70

8.2.2 使用快速枚举 71

8.2.3 创建自定义的枚举器 72

8.2.4 实现快速枚举 76

8.2.5 内部枚举 79

8.3 Cocoa中的示例 80

8.4 后果 80

第9章 执行选择器和延迟执行 82

9.1 动机 82

9.2 解决方案 82

9.2.1 延迟执行 84

9.2.2 Objective-C消息发送的实现 85

9.3 Cocoa中的示例 86

9.4 后果 87

第10章 访问器 89

10.1 动机 90

10.2 解决方案 90

10.2.1 引用计数的内存管理 91

10.2.2 管理保留计数的访问器 92

10.2.3 将内存管理限制在访问器中 95

10.2.4 可变性 95

10.2.5 NSKeyValueCoding 97

10.2.6 Interface Builder插座变量 98

10.2.7 Objective-C 2.0的属性 98

10.3 Cocoa中的示例 98

10.4 后果 101

第11章 归档和解档 102

11.1 动机 102

11.2 解决方案 102

11.3 Cocoa中的示例 105

11.3.1 实现NSCoding协议 106

11.3.2 编码和解码非对象类型 108

11.3.3 对象替换 110

11.3.4 nib意识 110

11.4 后果 111

第12章 复制 112

12.1 动机 112

12.2 解决方案 114

12.3 Cocoa中的示例 116

12.3.1 实现NSCopying 116

12.3.2 实现深复制 117

12.3.3 实现NSMutableCopying 118

12.3.4 必需的复制 119

12.3.5 复制Objective-C 2.0的属性 119

12.3.6 避免使用NSCopyObject() 121

12.4 后果 121

第三部分 主要通过解耦来变得更强大的模式第13章 单例 124

13.1 动机 124

13.2 解决方案 124

13.2.1 封装共享资源 124

13.2.2 创建和访问共享实例 126

13.2.3 控制实例化 127

13.2.4 取消分配 129

13.2.5 确定是否创建了单例 130

13.2.6 线程安全 130

13.2.7 与Interface Builder协作 130

13.3 Cocoa中的示例 131

13.4 后果 132

第14章 通知 133

14.1 动机 133

14.2 解决方案 134

14.2.1 MYNotification类 134

14.2.2 MYNotificationCenter类 135

14.2.3 联合存储 140

14.3 Cocoa中的示例 140

14.3.1 全局通知名称 140

14.3.2 “Will”和“Did”通知 141

14.3.3 同步通知与异步通知 141

14.3.4 分布式通知 143

14.4 后果 144

第15章 委托 146

15.1 动机 146

15.2 解决方案 149

15.2.1 实现委托支持 150

15.2.2 实现委托 155

15.2.3 数据源 156

15.3 Cocoa中的示例 157

15.4 后果 157

第16章 层次结构 159

16.1 动机 159

16.2 解决方案 159

16.2.1 实现层次结构 160

16.2.2 Cocoa视图层次结构 162

16.2.3 视图层次结构中的坐标系统 163

16.2.4 浏览视图层次结构 164

16.3 Cocoa中的示例 171

16.4 后果 171

第17章 插座变量、目标和动作 172

17.1 动机 173

17.2 解决方案 173

17.2.1 插座变量 176

17.2.2 目标 176

17.2.3 动作 176

17.2.4 动作和响应者链 178

17.3 Cocoa中的示例 179

17.4 后果 181

第18章 响应者链 183

18.1 动机 183

18.2 解决方案 183

18.2.1 术语 183

18.2.2 响应者链 184

18.2.3 扩展的响应者链 185

18.2.4 遍历扩展的响应者链 187

18.2.5 插入对象到响应者链中 188

18.2.6 利用响应者链 189

18.3 Cocoa中的示例 191

18.4 后果 191

第19章 联合存储 192

19.1 动机 192

19.2 解决方案 192

19.3 Cocoa中的示例 195

19.3.1 引用计数的内存管理 195

19.3.2 键值编码 198

19.4 后果 198

第20章 调用 200

20.1 动机 200

20.2 解决方案 200

20.2.1 方法签名 200

20.2.2 使用NSInvocation对象 201

20.2.3 使用计时器 205

20.2.4 延迟的消息发送 209

20.3 Cocoa中的示例 210

20.4 后果 211

第21章 原型 212

21.1 动机 212

21.2 解决方案 212

21.3 Cocoa中的示例 214

21.3.1 使用MYLabeledBarCell实例作为原型 214

21.3.2 使用MYColorLabeledBarCell实例作为原型 216

21.4 后果 218

第22章 享元 219

22.1 动机 219

22.2 解决方案 219

22.3 Cocoa中的示例 219

22.3.1 封装非对象值 220

22.3.2 减少存储需求 220

22.3.3 替代其他对象 221

22.4 后果 222

第23章 装饰器 223

23.1 动机 224

23.2 解决方案 224

23.3 Cocoa的示例 225

23.4 后果 226

第四部分 主要用于隐藏复杂性的模式 228

第24章 包 228

24.1 动机 228

24.2 解决方案 228

24.3 Cocoa中的示例 230

24.4 后果 232

第25章 类簇 233

25.1 动机 233

25.2 解决方案 233

25.3 Cocoa中的示例 237

25.3.1 子类化类簇的公共接口类 238

25.3.2 NSString的MYShortString子类 239

25.3.3 从MYShortString获得的经验教训 248

25.4 后果 248

第26章 外观 250

26.1 动机 250

26.2 解决方案 251

26.3 Cocoa中的示例 254

26.3.1 文本外观 254

26.3.2 图像外观 255

26.3.3 持久存储外观 255

26.3.4 用户交互外观 256

26.4 后果 257

第27章 代理和转发 258

27.1 动机 258

27.2 解决方案 258

27.2.1 实现转发 258

27.2.2 代理 259

27.2.3 高阶消息 265

27.3 Cocoa中的示例 270

27.4 后果 270

第28章 管理者 271

28.1 动机 271

28.2 解决方案 271

28.2.1 扩展单例模式 272

28.2.2 添加其他管理者特性 275

28.3 Cocoa中的示例 277

28.4 后果 277

第29章 控制器 279

29.1 动机 279

29.2 解决方案 279

29.2.1 MYShapeDraw模型子系统 280

29.2.2 MYShapeDraw视图子系统 281

29.2.3 MYShapeEditor控制器子系统 283

29.2.4 扩展MYShapeDraw视图子系统以进行编辑 292

29.2.5 重新设计和泛化解决方案 294

29.3 Cocoa中的示例 299

29.4 后果 300

第五部分 模式应用的实用工具 304

第30章 核心数据模型 304

30.1 模型子系统的角色 304

30.2 核心数据的术语 305

30.2.1 实体 305

30.2.2 特性 305

30.2.3 关系 306

30.2.4 属性 306

30.3 核心数据内模式之间的协作 307

30.3.1 NSManagedObject和NSEntityDescription 307

30.3.2 设计核心数据模型 312

30.3.3 NSManagedObjectContext 312

30.3.4 NSPersistentStoreCoordinator和NSPersistentStore 313

30.4 核心数据的局限性和好处 314

第31章 应用程序工具箱视图 315

31.1 视图子系统的角色 315

31.2 应用程序工具箱内的模式之间的协作 316

3 1.2.1 NSApplication、事件和运行循环 316

31.2.2 响应者 317

31.2.3 响应者链 317

31.2.4 NSWindow概述 318

31.2.5 NSView概述 319

31.2.6 目标和动作 321

31.2.7 归档的对象和nib 322

31.2.8 撤销和重做 324

31.2.9 管理者 324

31.3 应用程序工具箱的局限性和好处 325

第32章 绑定和控制器 326

32.1 绑定和控制器的角色 326

32.1.1 绑定避免耦合 328

32.1.2 结合使用控制器与绑定的重要性 328

32.2 绑定和控制器内的模式之间的协作 329

32.2.1 在-bind:toObject:withKeyPath:options:中发生了什么事情 330

32.2.2 键值观察如何检查对所观察属性的更改使得观察对象可以得到通知 330

32.2.3 在观察的属性的值改变时发送什么消息来通知注册的观察者 331

32.3 绑定和控制器的局限性和好处 333

附录 资源 334