首页>参考读物>计算机科学与技术>软件与程序设计

苹果开发之Cocoa编程(原书第4版)
作者 : (美)Aaron Hillegass,Adam Preble 著
译者 : 黄敏 郝刚 等译
出版日期 : 2012-08-31
ISBN : 978-7-111-39136-4
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 382
开本 : 16
原书名 : Cocoa Programming for MAC OS X
原出版社: Addison Wesley
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书介绍了为Mac OS X开发应用程序的所有知识,对Mac程度开发人员来说极其有用。书中包括两种常用的Mac开发工具:Xcode和Instruments,并涵盖了Objective-C语言和Cocoa中的主要设计模式。阅读本书能帮助你理解和运用Apple的在线文档,编写有你自己风格的代码。

图书特色

Aaron的这本书是Mac OS X编程图书领域的标杆——措辞优雅、精雕细琢,是开发苹果应用的优秀图书。
—— Scott Stevenson,www.theocacao.com

经过几个版次的市场检验,本书已经被公认为从零开始学习Cocoa编程的首选。Aaron是少数(很可能是唯一)全职的专业Cocoa讲师之一,他多年的教学经验都浓缩于本书中。
—— Tim Burks,资深软件工程师/Nu编程语言创始人

如果你是工作在UNIX或Windows平台上的程序员,希望为Mac OS X开发一些新应用,或者想将应用移植到Mac上,那么这本书是必备的参考书和培训资料。
—— Kevin H. Spencer,Apple认证技术协调员

本书前3个版本不仅在市场上取得了良好的销售成绩,而且获得了极佳的口碑,在Cocoa编程领域独树一帜!第4版结合Cocoa框架的最新技术,对全书内容进行了更新和优化,使之在技术上更先进,也更易于学习。本书的最大特色就是内容系统且全面:从Cocoa框架的基本概念,到Objective-C语言,再到Cocoa的主要设计模式;从Cocoa框架各组件和服务的使用,到Xcode和OpenGL等开发工具的应用,再到应用程序的发布;从开发环境的搭建等基础知识,到并发编程等高级知识……几乎面面俱到,广度与深度兼备。
全书用大量实例将理论知识贯穿起来,引导读者在实践中学习和领悟Cocoa框架的基本思想。在本书中,读者不仅能够掌握Cocoa编程的各项技术细节,更能领会不断剖析、层层递进的解决问题的思路,甚至可以看到如何查找资料、获取帮助的方法,帮助读者建立科学规范的开发习惯。

作者简介






Aaron Hillegass
资深苹果应用开发工程师、培训讲师和技术作家,在使用Cocoa进行开发方面拥有15年工作经验,具有非常高的知名度和非常大的影响力。曾就职于NeXT和Apple公司,目前在Big Nerd Ranch主讲Cocoa编程,第一套OpenStep(Cocoa的前身)教程便出自他和本书另一位作者之手。他还写过多本关于Cocoa、Objective-C、iPhone和iOS方面的图书。






Adam Preble
Mac和iOS软件程序开发顾问、资深苹果应用开发工程师、培训讲师和技术作家,在使用Cocoa、Objective-C以及C/C++进行开发方面拥有多年工作经验,尤其在应用程序用户体验方面有独到的见解。目前在Big Nerd Ranch开发Mac和iOS应用,也是Cocoa编程的主讲教师。

图书前言

如果你正在开发或者希望进行Mac应用开发,那么这本书就是你所需要的。本书是否涵盖了所有Mac应用编程的相关知识?当然不是,不过本书涉及了Mac开发接近80%的内容。读者可以在Apple公司的在线文档中找到剩余的20%,而这20%正是独属于你的。
  本书展示了应用开发的基础,包含了Objective-C语言和Cocoa的主要设计模式。读者还可以熟悉最常用的两个开发工具:Xcode和Instruments。阅读完本书之后,读者就可以理解并使用Apple公司的在线文档了。
  本书包含很多代码。通过这些代码,笔者将向读者讲解Cocoa社区的一些惯用法。希望通过实践这些示例代码,读者不仅能够成为一名Cocoa开发人员,而且还能够成为一名优秀的Cocoa开发人员。
  第4版涉及在Mac OS X 10.6和10.7中引入的一些技术,包括Xcode 4、ARC(Automatic Reference Counting,自动内存管理技术)、blocks、view-based table views和Mac应用商店。本书专门安排一章用于讲述iOS的基本开发。
  本书适合已经具备一些C语言基础且了解一些面向对象知识的开发人员。假如读者并不知道C语言或面向对象的概念,那么读者首先应该学习《Objective-C Programming: The Big Nerd Ranch guide》。读者并不需要具备Mac编程经验。这是一本实战类的图书,因此读者需要安装Mac OS X系统和开发工具。Xcode 4.2、Apple的IDE都可免费下载、安装。如果读者是Mac的付费会员,或者隶属iOS开发者联盟,也可以从Apple公司的开发者网站下载Xcode(http://developer.apple.com/)。开发者注册成为上述成员,可将自己的应用程序提交到Apple公司的Mac应用商店或iOS应用商店。
  笔者将尽可能地让本书更加实用。因此,笔者非常希望了解读者对于本书的任何改进建议,你可以将建议发送到cocoabook@bignerdranch.com。

Aaron Hillegass
Adam Preble

上架指导

计算机\程序设计

封底文字

“Aaron的书是Mac OS X编程图书的标杆——措辞优雅、精雕细琢,是LeOpard开发的优秀图书。”
——Scott Stevenson,www.theocacao com
“从零开始学习Cocoa的首选图书。Aaron是少数(很可能是唯一)全职的专业Cocoa讲师之一。他多年的教学经验都浓缩在本书中。”
——Tim Burks,软件工程师,Nu编程语言创始人
“如果你是UNIX或Windows的程序员,希望为Mac OS X开发一些新应用,或者想将应用移植NMac上。那么这本书是必备的参考和培训书。”
——Kevin H.Spencer,Apple认证技术协调员

本书系统介绍了Objective-C语言、Cocoa主要的设计模式、必要的开发工具Xcode和 Instruments等,同时新引入了ARC、blocks、view-based table views和Mac应用商店,并专门开辟一章用于介绍在iOS上的基础开发。相比于之前的版本,本书在Cocoa框架新特性、新技术的基础上,更加侧重实战,也更加结合应用发展的最新趋势。
全书以具体的实例贯穿,引导读者通过实践学习Cocoa框架的基本思想。在本书中,读者不仅能够看到技术细节,更能看到不断剖析、层层递进的解决问题的思路,甚至可以看到如何查找资料、获取帮助的方法,帮助读者建立规范、科学的设计开发习惯。

作者简介

(美)Aaron Hillegass,Adam Preble 著:Aaron Hillegass,曾就职于Next和Apple,现在在Big Nerd Ranch主讲Cocoa编程。第一套OpenStep(Cocoa的前身)教程即出自其手。本书基于Aaron在Big Nerd Ranch的教学内容,并融入了他在OpenStep和Cocoa方面15年的工作经验。

译者简介

黄敏 郝刚 等译:暂无简介

译者序

一直视乔布斯为心中的英雄,一直痴迷于苹果公司的一系列产品。从第一次听他在斯坦福的演讲,从第一次听他说那句有名的“求知若饥,虚心若愚”(stay hungry,stay foolish),就有着些许悲情的期待,期待他能再次创造奇迹,更期待他能摆脱病痛的桎梏。如今,老乔已经离开了这个世界,离开了他为之奋斗、为之痴迷的苹果世界,只给我们留下了现代科技史上的奇迹,这个奇迹深刻地改变了人们通讯、娱乐乃至生活的方式,让简约化、平民化、细节近乎完美的苹果产品成为科技时尚不可或缺的一部分,也许还将持续影响全球资讯科技和电子产品潮流的发展方向。
  如今,这段技术成就的神话已经成为广大程序员心中朝圣的目标,苹果产品及其支撑平台上的应用开发已经大行其道。苹果社区的日益火爆也反映了众多程序员及初学者对苹果编程开发技术的强烈需求。本书作为Mac应用开发入门级的经典教材,已是第4版了。本书引入了ARC、blocks、view-based table views和Mac应用商店,并专门开辟一章用于介绍在iOS上的基础开发。比之前面的版本,本书在Cocoa框架新特性、新技术的基础上,更加侧重实战,也更加结合应用发展的最新趋势。相信本书的引进能够推动苹果中文社区的进一步发展、壮大,也希望能够将Objective-C和Cocoa框架以及苹果产品背后一流的技术实力从细微处展现出来,帮助那些致力于创新、变革以及追求完美的人们。也许,下一个技术神话将从这里开始。
  本书的作者Aaron Hillegass在NeXT公司和苹果公司供职多年,在Big Nerd Ranch专职培训Cocoa编程。作为乔布斯曾经的同事,Aaron致力于苹果编程的开发与技术培训,其谦虚、细致的工作态度决定了本书是一个精雕细琢的精品。本书在Aaron多年教学经验的基础上进行了总结提炼,加之前面3版不断推敲和完善,已经成为学习Cocoa编程的入门级经典书籍。在本书中,读者不仅能够看到技术细节,更能看到不断剖析、层层递进的解决问题的思路,甚至能看到如何查找资料、获取帮助的方法,能够帮助读者建立规范、科学的设计开发习惯,不愧为入门必备的经典。
  参与本书翻译和审校工作的人员有:黄敏、郝刚、李彬、何元媛、赵忠庆、严治国、王晟、陈锦平、黄丕超、唐弋涵、屈凤英和倪锦屏等。另外,感谢机械工业出版社编辑耐心细致的工作,他们精益求精、追求完美的精神值得我们学习,也为我们为广大读者呈现精品提供了保证。最后还要感谢家人的大力支持,如果没有他们的无私奉献,我们不可能有大量的时间投入到本书的翻译工作中。
  囿于译者水平有限,本书翻译中不可避免地会存在一些问题与疏漏,还望读者拨冗予以反馈,我们也将及时登出勘误表,并为您在学习本书的过程中遇到的问题给予力所能及的帮助。

图书目录

译者序
前 言
致 谢
第1章 什么是Cocoa 1
1.1 历史简介 1
1.2 开发工具 3
1.3 编程语言 3
1.4 对象、类、方法和消息 4
1.5 框架 4
1.6 如何阅读本书 5
1.7 约定 5
1.8 常见错误 6
1.9 如何学习 6
第2章 起步 7
2.1 Xcode 7
2.1.1 新建项目 7
2.1.2 main函数 10
2.2 Interface Builder 10
2.2.1 utility区 11
2.2.2 空白窗口 11
2.2.3 页面布局 12
2.2.4 dock 14
2.2.5 创建一个类 14
2.2.6 创建一个实例 16
2.2.7 创建连接 16
2.3 回顾Objective-C 18
2.3.1 Objective-C中的类型和常量 19
2.3.2 查看头文件 19
2.3.3 编辑实现文件 20
2.3.4 编译和运行 21
2.3.5 awakeFromNib 22
2.4 文档 23
2.5 你做了什么 24
2.6 应用程序运行过程 24
第3章 Objective-C 26
3.1 创建和使用实例 26
3.2 使用已有的类 27
3.2.1 给nil发送消息 31
3.2.2 NSObject、NSArray、NSMutableArray和NSString 32
3.2.3 组合和继承 35
3.3 创建自己的类 36
3.3.1 创建LotteryEntry类 36
3.3.2 更改main.m文件 38
3.3.3 实现Description方法 39
3.3.4 编写初始化器initializer 41
3.3.5 带参数的初始化器 42
3.4 调试器 43
3.5 你做了什么 47
3.6 静态分析器 47
3.7 补充知识:消息机制工作原理 48
3.8 挑战 49
第4章 内存管理 50
4.1 手动内存管理 51
4.1.1 创建没有内存泄漏的彩票程序 52
4.1.2 dealloc函数 54
4.1.3 自动释放对象 54
4.1.4 retain计数规则 56
4.2 Accessor方法 57
4.3 使用ARC 60
4.3.1 强引用 60
4.3.2 弱引用 60
4.3.3 ARC补充知识 61
第5章 Target/Action 62
5.1 一些NSControl子类的常见用法 64
5.1.1 NSButton 64
5.1.2 NSSlider 65
5.1.3 NSTextField 65
5.2 开始SpeakLine示例 67
5.3 XIB文件中的布局设置 68
5.4 实现SpeakLineAppDelegate类 71
5.5 补充:通过代码设置 72
5.6 挑战 72
5.7 调试建议 73
第6章 Helper对象 75
6.1 委托 75
6.2 NSTableView及其dataSource 79
6.3 用户界面布局 81
6.4 建立连接 83
6.5 编辑SpeakLineAppDelegate.m文件 83
6.5.1 在实现委托时的常见错误 85
6.5.2 对象委托 85
6.6 补充知识:委托是怎样工作的 86
6.7 挑战1:创建委托 87
6.8 挑战2:创建一个数据源 87
第7章 键–值编码和键–值观察 88
7.1 键–值编码 88
7.2 绑定 89
7.3 键–值观察KVO 91
7.4 使对象的键可观察 91
7.5 Properties 93
7.6 补充知识1:键路径 95
7.7 补充知识2:键–值观察 96
第8章 NSArrayController 97
8.1 从RaiseMan应用开始 98
8.2 键–值编码和nil 105
8.3 添加排序功能 106
8.4 补充知识:不使用NSArrayController进行排序 107
8.5 挑战1 107
8.6 挑战2 107
第9章 NSUndoManager 110
9.1 NSInvocation 110
9.2 NSUndoManager的工作机制 110
9.3 为RaiseMan添加撤销功能 112
9.4 键–值观察 115
9.5 撤销编辑操作 116
9.6 插入后立即编辑 118
9.7 补充知识:窗口和undo管理器 120
第10章 Archiving 121
10.1 NSCoder和NSCoding 122
10.1.1 编码 122
10.1.2 解码 123
10.2 文档架构 124
10.2.1 Info.plist和NSDocumentController 124
10.2.2 NSDocument 125
10.2.3 NSWindowController 127
10.3 保存和NSKeyedArchiver 127
10.4 载入和NSKeyedUnarchiver 127
10.5 为文件类型设置扩展名和图标 129
10.6 补充知识1:避免死循环 131
10.7 补充知识2:创建Protocol 131
10.8 补充知识3:自动保存文档 132
10.9 补充知识4:没有undo功能的基于文档的应用程序 133
10.10 统一类型标识符 133
第11章 Core Data基本原理 134
11.1 NSManagedObjectModel 134
11.2 Interface 136
11.2.1 基于视图的表格视图 137
11.2.2 连接和绑定 140
11.2.3 Core Data 如何工作 145
11.3 补充知识:基于视图和基于单元格的表格视图比较 146
11.4 挑战 147
第12章 NIB文件和NSWindowController 148
12.1 NSPanel 148
12.2 向应用程序添加面板 149
12.2.1 设置菜单项 150
12.2.2 AppController.m 151
12.2.3 Preferences.xib 152
12.2.4 PreferenceController.m 155
12.3 补充知识:NSBundle 157
12.4 挑战 157
第13章 User Defaults 158
13.1 NSDictionary和NSMutableDictionary 159
13.1.1 NSDictionary 159
13.1.2 NSMutableDictionary 160
13.2 NSUserDefaults 160
13.3 设置Defaults 161
13.3.1 设置程序标识符 161
13.3.2 为defaults的名字建立键 161
13.3.3 注册defaults 162
13.4 让用户编辑Defaults 163
13.5 使用Defaults 164
13.5.1 禁用自动创建未命名新文档 164
13.5.2 设置表格视图的背景色 165
13.6 补充知识1:NSUserDefaultsController 166
13.7 补充知识2:从命令行读写Defaults 166
13.8 挑战 167
第14章 使用Notifications 168
14.1 Notifications 是什么 168
14.2 Notifications不是什么 168
14.3 NSNotification 169
14.4 NSNotificationCenter 169
14.5 发布notification 171
14.6 注册成为观察者 171
14.7 当notification到达时怎么处理 172
14.8 userInfo字典 172
14.9 补充知识:Delegates和 Notifications 173
14.10 挑战 173
第15章 使用告警窗口 174
15.1 让用户确认删除 175
15.2 挑战 177
第16章 本地化 178
16.1 本地化NIB文件 179
16.2 字符串表 181
16.2.1 创建字符串表 181
16.2.2 使用字符串表 182
16.3 补充知识1:ibtool  183
16.4 补充知识2:格式化字符串中符号的顺序 184
第17章 自定义视图 185
17.1 视图层次 185
17.2 绘制视图 186
17.2.1 创建视图子类的实例 187
17.2.2 Size Inspector 188
17.2.3 drawRect 189
17.3 使用NSBezierPath 绘图 191
17.4 NSScrollView 192
17.5 用程序创建视图 195
17.6 补充知识1:单元格 195
17.7 补充知识2:isFlipped 196
17.8 挑战 197
第18章 图片和鼠标事件 198
18.1 NSResponder 198
18.2 NSEvent 198
18.3 捕获鼠标事件 199
18.4 使用NSOpenPanel  200
18.4.1 修改XIB文件 201
18.4.2 代码编辑 203
18.5 在视图中合成图片 204
18.6 视图的坐标系统 206
18.7 Autoscrolling 208
18.8 补充知识:NSImage 208
18.9 挑战 209
第19章 键盘事件 210
19.1 NSResponder 211
19.2 NSEvent 212
19.3 使用自定义视图创建一个新的工程 212
19.3.1 界面布局 212
19.3.2 创建连接 214
19.3.3 编写代码 216
19.4 补充知识:Rollovers 219
19.5 毛边蓝框 220
第20章 绘制带属性的文本 222
20.1 NSFont 222
20.2 NSAttributedString 223
20.3 绘制字符串和属性字符串 225
20.4 显示字母 225
20.5 让视图生成PDF数据 226
20.6 补充知识:NSFontManager 228
20.7 挑战1 229
20.8 挑战2 229
第21章 粘贴板和Nil-Targeted Actions 230
21.1 NSPasteboard 231
21.2 在BigLetterView 中添加剪切、复制和粘贴功能 232
21.3 Nil-Targeted Actions 233
21.4 补充知识1:哪个对象发送了action消息 235
21.5 补充知识2:UTI和剪贴板 236
21.6 补充知识3:延迟复制技术 236
21.7 挑战1 237
21.8 挑战2 237
第22章 Categories 238
22.1 在NSString 中添加方法 238
22.2 补充知识:声明私有方法 240
第23章 拖放 241
23.1 设置BigLetterView 为拖动作的源 241
23.1.1 开始拖操作 242
23.1.2 释放以后 244
23.2 设置BigLetterView为拖操作的目的 244
23.2.1 registerForDraggedTypes: 245
23.2.2 添加高亮效果 245
23.2.3 实现拖操作目的方法 246
23.2.4 添加第二个的BigLetterView 对象 247
23.3 补充知识:Operation Mask 247
第24章 NSTimer 248
24.1 界面布局 250
24.2 建立连接 251
24.3 为TutorController添加代码 253
24.4 补充知识:NSRunLoop 255
24.5 挑战 255
第25章 工作表 256
25.1 添加sheet窗口 256
25.1.1 添加outlet和action 257
25.1.2 界面布局 258
25.1.3 添加代码 261
25.2 补充知识1:contextInfo 261
25.3 补充知识2:模式化窗口 262
第26章 创建NSFormatters 263
26.1 简单的格式化器类 264
26.1.1 创建ColorFormatter.h 265
26.1.2 编辑XIB文件 265
26.1.3 NSColorList 267
26.1.4 在字符串中搜索子串 267
26.1.5 实现基本的格式化器方法 267
26.2 NSControl类的Delegate 269
26.3 检查部分字符串 270
26.4 返回属性字符串的格式化器 272
26.5 补充知识:NSValueTransformer 272
第27章 打印 273
27.1 处理页面设置 273
27.2 补充知识:是在屏幕上绘图吗 277
27.3 挑战 277
第28章 Web Service 278
28.1 RanchForecast项目 279
28.1.1 NSURLConnection 280
28.1.2 在ScheduleFetcher中添加XML解析功能 281
28.1.3 界面布局 284
28.1.4 编写控制器代码 285
28.2 打开URL 286
28.3 挑战:添加一个WebView 286
第29章 Blocks 288
29.1 块语法 290
29.1.1 块内部的内存和对象操作 291
29.1.2 块的可用性 292
29.1.3 RanchForecast: 异步开发 292
29.1.4 接收异步响应 293
29.2 挑战:实现一个Delegate 296
第30章 iOS开发 297
30.1 将RanchForecast移植到iOS 297
30.2 RootViewController 299
30.3 添加导航控制器 302
30.4 ScheduleViewController 303
30.5 UITableViewController 304
30.6 视图控制器切换 305
30.7 挑战 306
第31章 视图切换 307
31.1 开始 308
31.1.1 创建管理视图控制器类 309
31.1.2 创建视图控制器及其XIB文件 309
31.2 给MyDocument添加视图切换功能 311
31.3 调整窗口尺寸 312
第32章 Core Data Relationships 314
32.1 模型编辑 314
32.2 创建自定义NSManagedObject类 315
32.2.1 Employee 316
32.2.2 Department 317
32.3 界面布局 318
32.4 事件及nextResponder 320
第33章 Core Animation 322
33.1 Scattered 322
33.2 隐式动画及action 327
33.3 挑战1 329
33.4 挑战2 329
第34章 并发性 330
34.1 多线程 330
34.1.1 巨大的分歧 331
34.1.2 简单的Cocoa后台线程 332
34.2 Scattered 升级版:Instruments 中的Time Profiling 333
34.3 NSOperationQueue 336
34.3.1 Scattered的多线程解决方案 336
34.3.2 线程的同步处理 338
34.4 补充知识:更快的Scattered 程序 338
34.5 挑战 339
第35章 Cocoa和OpenGL 340
35.1 一个简单的Cocoa/OpenGL应用程序 340
35.2 界面布局 341
35.3 代码编写 344
第36章 NSTask 347
36.1 ZIPspector 347
36.1.1 同步读取 351
36.1.2 iPing 352
36.2 挑战:.tar和.tgz文件 355
第37章 发布应用 356
37.1 Build Configurations 356
37.2 创建Release版本 358
37.3 应用沙箱 360
37.3.1 权限 360
37.3.2 文件访问与权限的折中 361
37.4 苹果应用商店 362
结束语 364

教学资源推荐
作者: (美)Maurice Herlihy 布朗大学 Nir Shavit 麻省理工学院 著
作者: 苏小红 蒋远 单丽莉 李东 编著
作者: 周纯杰 何顶新 周凯波 彭刚 张惕远 编著
参考读物推荐