标题：苹果开发之Cocoa电脑编程
基本信息
原书名：Cocoa(R) Programming for Mac(R) OS X (3rd Edition)
原出版社： Addison-Wesley Professional
作者：Aaron Hillegas  
译者：钱友才 陈勇 王健
出版社：电子工业出版社
ISBN：9787121092398
出版日期：2009 年8月
开本：16开
页码：433
版次：3-1
编辑推荐
从零开始学习Cocoa的首选图书.
涵盖了最新的Mac编程技术
高级Mac OS X开发者们联手强烈推荐..
Mac OS X编程图书的标杆
Aaron Hillegass多年Cocoa教学实践经验的总结
内容简介
本书的内容是作者多年的Cocoa教学实践经验的总结，涵盖了最新的Mac编程技术，包括Xcode 3、Objective-C2．0、CoreData、垃圾收集器，以及CoreAnimation。本书系统介绍了Objective-C语言、Cocoa主要的设计模式、必要的开发工具Xcode、Interface Builder和Instnanents。全书贯穿以具体的实例，引导读者通过实践掌握Cocoa框架的基本思想。阅读这本书不要求任何的Mac编程经验，只需要基本的c语言，以及面向对象的知识
目录
第1章 什么是cocoa   1
1 1 历史简介 1
1 2 开发工具 3
1 3 语言 4
1 4 对象、类、方法和消息 4
1 5 框架 6
1 6 怎样阅读这本书 6
1 7 常见错误 7
1 8 怎样学习 8
第2章 起步 9
2 1 xcode 9
新建一个项目 10
main函数 12
2 2 interface builder 13
library窗口 14
空白窗口 14
布局界面 15
指示窗口 17
创建一个类 17
创建一个对象 19
建立连接 20
2 3 回到xcode 23
objective-c中的类型和常量 23
查看头文件 24
编辑定义文件 25
编译运行 27
awakefromnib 28
2 4 文档 29
2 5 你做了什么 30
第3章 objective-c语言 33
3 1 创建、使用对象 33
3 2 使用已有的类 35
给nil发送消息 40
nsobject、nsarray、nsmutablearray和nsstring 41
继承和组合 45
3 3 建自己的类 46
创建lotteryentry类 46
修改lottery m 49
实现description方法 50
编写initializers（初始化器） 55
带参数的initializer 56
3 4 调试器 58
3 5 补充知识：消息机制工作原理是什么 62
3 6 挑战 63
第4章 内存管理 65
4 1 开关垃圾收集器 66
4 2 使用garbage collection 68
4 3 使用retain 计数 68
实现dealloc 71
创建自动释放对象 72
accessor方法 74
4 4 你完成了什么 77
第5章 target/action 79
5 1 一些常用的nscontrol子类 81
nsbutton 81
nsslider 82
nstextfield 83
5 2 开始speakline例子 85
5 3 nib文件的布局 86
使用interface builder建立连接 87
nswindow的initialfirstresponder outlet 88
5 4 实现appcontroller类 88
5 5 补充知识：通过代码来设置target 90
5 6 挑战 90
5 7 调试建议 92
第6章 helper对象 95
6 1 委托（delegate) 96
6 2 nstableview和它的datasource 99
6 3 布局用户界面 102
6 4 创建连接 103
6 5 修改appcontroller m 105
实现委托时的常见错误 107
对象委托 107
6 6 补充知识：委托是如何工作的 108
6 7 挑战：创建一个委托 109
6 8 挑战：创建一个数据源 110
第7章 key-value coding；key-value observing 111
7 1 key-value coding 111
7 2 绑定 113
7 3 key-value observing 115
7 4 让keys可被观察 116
7 5 properties和它们的attributes 118
@property和@synthesize 118
一个property的attributes 119
7 6 补充知识：key paths 120
7 7 补充知识：key-value observing 121
第8章 nsarraycontroller 123
8 1 开始写raiseman应用 124
在xcode中 125
在interface builder中 128
8 2 key-value coding和nil 132
8 3 添加排序 133
8 4 补充知识：不使用nsarraycontroller排序 134
8 5 挑战一 135
8 6 挑战二 135
第9章 nsundomanager 139
9 1 nsinvocation 139
9 2 nsundomanager如何工作 140
9 3 给raiseman添加撤销 142
9 4 key-value observing 145
9 5 撤销修改 146
9 6 插入操作后立刻开始编辑 149
9 7 补充知识：窗口和撤销管理器 151
第10章 archiving 153
10 1 nscoder和nscoding 154
编码 154
解码 156
10 2 文档架构 157
info plist和nsdocumentcontroller 157
nsdocument 158
nswindowcontroller 161
10 3 保存和nskeyedarchiver 161
10 4 载入和nskeyedunarchiver 162
10 5 为文件类型设置文件扩展名和图标 163
10 6 补充知识：防止死循环 166
10 7 补充知识：创建一个protocol 167
10 8 补充知识：不带撤销的document-based application 167
10 9 统一类型标识符（universal type identifiers） 168
第11章 core data基本原理 171
11 1 nsmanagedobjectmodel 171
11 2 interface 173
创建并配置view 175
连接和绑定 177
11 3 core data是怎么工作的 180
第12章 nib文件和nswindowcontroller 183
12 1 nspanel 183
12 2 给程序添加一个panel 184
设置菜单项 186
appcontroller m 187
preferences nib 188
preferencecontroller m 192
12 3 补充知识：nsbundle 194
12 4 挑战 195
第13章 user default 197
13 1 nsdictionary和nsmutabledictionary 198
nsdictionary 198
nsmutabledictionary 199
13 2 nsuserdefaults 200
不同类型的defaults的优先级 201
13 3 设置程序的标识符 202
13 4 命名defaults中的键 202
13 5 注册defaults 203
13 6 让用户编辑defaults 203
13 7 使用defaults 205
禁止生成untitled documents 205
设置表格视图的背景颜色 206
13 8 补充知识：nsuserdefaultscontroller 207
13 9 补充知识:使用command line来读写defaults 207
13 10 挑战 208
第14章 使用notifications 209
14 1 什么是notification 209
14 2 notifications不是什么 210
14 3 nsnotification和nsnotificationcenter 210
14 4 发送一个notification 212
14 5 注册成为observer 213
14 6 处理接受到的notification 214
14 7 userinfo字典 214
14 8 补充知识：delegates和notifications 215
14 9 挑战 216
第15章 使用alert panels 217
15 1 让用户确认删除 218
15 2 挑战 221
第16章 本地化 223
16 1 nib文件的本地化 224
16 2 字符串表 226
创建字符串表 227
使用字符串表 229
16 3 补充知识：ibtool 230
16 4 补充知识：格式化字符串中符号的顺序   231
第17章 自定义视图 233
17 1 view的层次 233
17 2 让view绘制自己 235
创建一个view 子类的对象 236
大小检查 237
drawrect 238
17 3 使用nsbezierpath绘制 240
17 4 nsscrollview 242
17 5 通过程序创建view 245
17 6 补充知识：单元格 245
17 7 补充知识：isflipped 247
17 8 挑战 248
第18章 image和鼠标事件 249
18 1 nsresponder 249
18 2 nsevent 249
18 3 获取鼠标事件 251
18 4 使用nsopenpanel 251
修改nib文件 252
编辑代码 255
18 5 在view中合成一个图像 256
18 6 view的坐标系统 258
18 7 autoscrolling 261
18 8 补充知识：nsimage 261
18 9 挑战 262
第19章 键盘事件 263
19 1 nsresponder 265
19 2 nsevent 265
19 3 创建一个带有自定义view的项目 266
界面布局 266
建立连接 267
编写代码 270
19 4 补充知识：rollovers 274
19 5 毛边的蓝色框 275
第20章 绘制带属性的文本 277
20 1 nsfont 277
20 2 nsattributedstring 278
20 3 绘制字符串和属性字符串 280
20 4 显示字母 281
20 5 让你的view生成pdf数据 283
20 6 补充知识：nsfontmanager 286
20 7 挑战1 286
20 8 挑战2 286
第21章 粘贴板和nil-targeted actions 287
21 1 粘贴板 288
21 2 给bigletterview添加剪切、复制和粘贴 289
21 3 nil-targeted actions 290
如何搜索响应链 291
查看nib文件 292
21 4 补充知识：哪个对象发送了action消息 293
21 5 补充知识：延迟复制 293
21 6 挑战1 294
21 7 挑战2 294
第22章 categories 295
22 1 给nsstring添加一个方法 295
22 2 补充知识：声明私有方法 297
22 3 补充知识：protocol的非正式写法 297
第23章 拖放 299
23 1 让bigletterview成为一个拖动源 300
23 2 让bigletterview成为拖动目的地 303
registerfordraggedtypes 304
添加高亮 304
实现dragging-destination方法 305
测试 306
23 3 补充知识：operation mask 307
第24章 nstimer 309
24 1 界面布局 311
24 2 创建连接 312
24 3 添加代码到appcontroller 314
24 4 补充知识：nsrunloop 316
24 5 挑战 316
第25章 工作表（sheet） 317
25 1 添加一个工作表 318
添加outlet和action 319
界面布局 319
添加代码 323
25 2 补充知识：contextinfo 324
25 3 补充知识：模式窗口（modal windows） 325
第26章 创建nsformatter 327
26 1 一个基本格式化器 328
新建colorformatter h 329
修改nib文件 329
nscolorlist 331
在字符串里搜索子字符串 332
实现基本格式化器的方法 332
26 2 nscontrol的委托 334
26 3 检查部分字符串 335
26 4 让格式化器返回attributed字符串 337
第27章 打印 339
27 1 处理分页 339
27 2 补充知识：现在是输出到屏幕上么 344
27 3 挑战 344
第28章 web service 345
28 1 amazone 346
28 2 界面布局 347
28 3 写代码 349
28 4 挑战：添加一个webview 353
第29章 视图切换 355
29 1 设计 356
开始 356
创建managedviewcontroller类 357
创建viewcontrollers和它们的nib文件 358
添加视图切换到mydocument 360
29 2 调整窗口大小 362
第30章 core data relationships 365
30 1 编辑模型 365
30 2 创建自定义nsmanagedobject类 366
employee 367
department 368
30 3 界面布局 369
departmentview nib 369
employeeview nib 371
30 4 事件和nextresponder 372
第31章 垃圾收集 375
31 1 非对象的数据类型 376
c的原始类型 376
core foundation 377
31 2 多项式示例 377
31 3 instruments 383
31 4 补充知识：弱引用 385
31 5 挑战：试错 385
第32章 core animation 387
32 1 创建calayer 388
32 2 使用calayer和caanimation 390
移除polynomials 392
同时移动多个层 393
调整层大小并重绘 393
calayer 394
第33章 一个简单的cocoa/opengl应用程序 397
33 1 使用nsopenglview 397
33 2 写程序 398
界面布局 399
写代码 402
第34章 nstask 405
34 1 多线程对多进程 405
34 2 zipspector 406
34 3 异步读取 410
34 4 iping 411
34 5 挑战： tar和 tgz文件 415
第35章 结束 417
35 1 挑战 418
索引    419
译者序
作为个人PC时代开创者的苹果，在过去的33年里，历经大起大落。而最近几年，我们看到那个锐意创新的苹果正踏着梦幻的脚步重新回到舞台的中心，再次站在潮流的顶点。对于用户而言，苹果总是能设计制造出非凡的产品勾起用户的欲望，一次次用完美的细节打动用户的心；对于程序员而言，Darwin的UNIX/BSD血统有着天然的亲和力， 而Objective-C和Cocoa框架，则让程序员认识了苹果一流产品背后的技术实力。正是这些从硬件到系统、从语言到框架的多层次的长期积淀，让苹果能够创造出如iPhone这样的明星产品。 
虽然苹果电脑在美国一直有着不错的市场占有率，但因为价格的关系，对于国内的用户而言，它最多只能是多数人眼中的梦中情人而已。而这几年汇率的变化，让苹果产品的性价比变得极为出色，OS X系统的占有率在稳步提升，如果算上iPhone的系统，国内OS X系统的拥有量已经相当可观。因此放在国内来讲，这个平台对程序员而言是一个全新的机会。但目前而言，这个平台上中文参考书确实匮乏，因此才有了这本书的翻译。希望本书的翻译出版能够促进苹果中文开发社区的进一步的发展，帮助更多的程序员了解苹果的开发平台。  
本书的作者Aaron Hillegass是Big Nerd Ranch（一家专业的培训机构）的专职培训Cocoa的老师。这样一个有着多年的实际教学经验的作者写出的书，再经过前两版对内容的推敲，此书自然是一本久经考验的入门必备好书。这本书剖析了很多关键内容的来龙去脉，既交代了原因，也分析了解决问题的思路，包括如何获取资料、查看文档，甚至于如何在社区提问等等，真正做到了授之以渔。
本书的第1至5章，第11至20章由陈勇翻译，第28至35章由王健翻译，剩下的由钱友才翻译。
感谢许其峰和苗涛在本书翻译过程中提供的帮助，另外还要感谢博文视点的徐定翔和白爱萍两位编辑的细致和耐心的工作，正是在他们的帮助下，初次接触翻译的我们才能顺利完成任务，最后还要感谢本书原作者Aaron Hillegass伸出的援助之手，让这本书得以尽快面世。
尽管翻译过程中诚惶诚恐，生怕有辞不达意之失，更怕糟蹋了这本经典的Cocoa编程书籍，但囿于经验和能力，书中的问题和疏漏在所难免，还请读者能够给予反馈，我们将维护一份勘误表，并为您在学习本书过程中遇到的问题提供力所能及的帮助。
媒体评论
“Aaron的书是Mac OSX编程图书的标杆——措辞优雅、精雕细琢，是Leopard开发的优秀图书。” 
———Scott Stevenson
“从零开始学习Cocoa的首选图书。Aaron是少数(很可能是唯一)全职的专业Cocoa讲师之一，他多年的教学经验都浓缩在本书中。”  
——Tim Burks，软件工程师，Nu编程语言创始人
“如果你是UNIX或Windows的程序员，希望为Mac OS X开发一些新应用，或者想将应用移植到Mac上，那么这本书是必备的参考和培训书。”     ——Kevin H Spencer，Apple认证技术协调员