标题：iPhone应用程序开发攻略之深入浅出Objective-C 20
图书信息
软件创富密码：iPhone应用程序开发攻略之深入浅出Objective-C 20（双色）  王志刚 等编著
ISBN 978-7-121-13469-2  
2011年6月出版
定 价：69.00元
16开
356页
宣传语
在学了此书中关于如何使用Objective-C 20开发您的第一个IPhone应用程序之后
您也可以赚取您的第一桶金
内 容 简 介
本书系统地介绍了关于使用Objective-C 20开发iPhone应用程序的基础知识，涵盖各种开发工具的操作技巧、框架（Framework）内部的工作原理、软件的调式技巧、后期制作等基础知识。书中花费大量篇幅介绍开发iPhone应用程序时所必需的各种常用类库，结合针对性强的应用实例的讲解，可进一步加深读者对这些常用类库的理解。
本书可作为iPhone应用程序开发的入门教材使用。
前 言
今天像Android，Blackberry，Windows Phone，iPhone等智能手机广受关注，特别是iPhone。2010年伊始，苹果公司连续推出了iPhone的升级产品iPhone 4，以及与iPhone使用相同OS的iPad，2011年又推出了iPad 2，给业界带来了强烈的冲击。
苹果公司的iPhone，iPad等产品广受消费者支持的原因，不仅在于其前卫新颖的外观设计，简洁直观的用户界面，更在于其能给用户提供多种多样的应用程序的选择。苹果的App Store中已经汇集了十几万种应用程序供用户选择，而且每天还有各种专业或业余的程序设计人员不断将自己的作品汇入其中。可以肯定地说在不远的将来，我们还将继续见证苹果移动电子产品的成长壮大。
本书目的不是要惊叹iPhone，iPad等产品的伟大，而是想告诉大家，其实我们也可以在这个不断成长的大饼中，利用自己的智慧分得一杯羹。只要您有好的创意，即使您是没有程序设计经验的家庭主妇，只要您做出了应用程序，加入到App Store中后，也可以从苹果移动电子产品的全球用户群中赚取您的利润。运气好的话，甚至是一笔不菲的收入呢，这方面成功的例子有很多。
本书内容
至于iPhone应用程序的开发更不是什么高不可攀的东西，本书从易到难介绍iPhone应用程序编程的知识，同时还会有笔者在开发iPhone应用程序过程中获得的许多心得体会。
本书主要介绍iPhone应用程序的开发语言Objective-C，以及Cocoa与Cocoa Touch框架（framework）的基础知识（Cocoa Touch框架用于iPhone应用程序，而Cocoa框架用于Mac应用程序）。同时还花费了一定篇幅来介绍关于iPhone应用程序开发的基本概念方面的知识，如MVC框架概念、内存管理概念等。
iPhone应用程序开发必须要在Mac电脑上进行，对于那些没有使用Mac电脑的朋友，书中也穿插了许多关于Mac电脑的使用知识，介绍了开发iPhone以及Mac应用程序时专用的、主要的几种开发工具的使用，如Xcode，Interface Builder等。涵盖从应用程序开发到最终应用程序发布为止的，几乎所有会使用到的开发工具。
本书中围绕相关知识的介绍，配备了详细的实例。具体的开发相关知识都是以实例为中心进行展开的，力争做到通俗易懂。
本书读者
开发iPhone应用程序时基本上都要使用Objective-C（部分有使用DashCode开发的Web应用程序），因此掌握Objective-C及相关框架知识是首要的前提条件。Objective-C语言的本质是C语言的扩展版本，是一种面向对象型的开发语言。有了C语言或者面向对象语言的基础知识，将有助于您掌握Objective-C，但是并不意味着没有这些，学习起来就会很困难。通常iPhone应用程序的大部分功能都是由各种框架（如iPhone应用程序的界面由AppKit框架实现）来完成的，实际代码几乎是约定俗成的，因此不用拥有对面向对象编程概念很深理解，或者更深的C语言知识就能够着手编程了。笔者认为，本书正是适合那些没有C语言基础以及面向对象编程知识的朋友。当然对于拥有这方面知识的朋友可以将有关章节当做复习或者参考，毕竟Objective-C的面向对象的概念与其他语言如Java等还是有所区别的。
参与本书编写的人员有朱蕾、罗伟、黄建峰、朱至濂。另外，在此特别感谢我父母在本书编写过程中给予的大力支持。
作者
2011年3月
目 录
第1章 配置开发环境 2
11 Mac应用程序开发环境2
12 iPhone应用程序的开发环境3
13 查看安装目录中的内容5
131 启动Xcode6
132 启动Interface Builder7
14 Mac中的基本操作7
141 弹出菜单的显示方法7
142 工具条的定制9
第2章 开发工具 11
21 Xcode11
211 综合开发环境Xcode的功能11
212 工程窗口12
213 文本编辑器的功能16
214 开发者手册18
22 Interface Builder20
23 Dashcode20
24 iPhone模拟器21
25 其他工具22
251 FileMerge22
252 Icon Composer23
253 Property List Editor23
26 Mac或iPhone应用程序开发的流程23
261 准备应用程序用的材料24
262 建立步骤25
263 gcc26
第3章 应用程序与框架 27
31 关于应用程序27
311 应用程序的种类28
312 关于iPhone应用程序29
32 框架29
321 简单的“Hello World”程序29
322 框架的出现30
323 编程语言与框架的关系30
33 Mac OS X以及iPhone SDK中的框架31
331 框架的安装目录31
332 Cocoa与Carbon32
333 应用程序中使用的框架32
34 Cocoa与Carbon的发展轨迹34
341 Cocoa是面向对象型的框架，所以挺难掌握35
342 Carbon是用C开发的，懂语言的人应该用Carbon35
343 Carbon将来会消失35
344 Carbon应用程序使用Cocoa进行改写后速度会提高35
345 如果使用Windows版的Cocoa进行开发，在Windows上也能
运行Cocoa应用程序36
第4章 Cocoa与Objective-C 37
41 框架的使用37
411 关于API37
412 API与编程语言的关系39
42 Objective-C的发展史39
43 用于其他语言中的Cocoa API41
431 通过桥调用Cocoa41
432 是否应提倡在Objective-C以外的语言中调用Cocoa API的开发方式42
44 解答与Objective-C相关的几个疑问43
441 是否需要先掌握C语言，以及Smalltalk呢43
442 Objective-C这样冷门的语言不好学吧43
443 Objective-C也能广泛运用在Windows或Linux平台上吗44
444 Objective-C将来会消失吗44
第5章 Cocoa面向对象编程的基本概念 45
51 面向对象的5个基本术语45
511 类46
512 实例46
513 实例变量47
514 方法48
515 继承48
516 相互关系49
517 对象50
52 在Cocoa实例中理解基本术语50
521 通过按钮配置理解基本术语50
522 文本输入框的继承关系51
第6章 Hello World应用程序 53
61 关于Cocoa版的Hello World程序53
62 启动Xcode创建工程54
63 创建类56
631 创建类文件56
632 追加代码56
64 启动Interface Builder设计用户界面58
641 xib文件58
642 Interface Builder窗口59
643 设计Hello World的用户界面61
65 类的实例化62
66 连接插座与动作64
67 完成AppController的代码编写67
68 建立与运行67
69 开发步骤再回顾69
第7章 MVC构架 70
71 Hello World应用程序开发流程中包含的信息70
72 什么是MVC构架70
721 视图层71
722 模型层71
723 控制层72
73 使用MVC构架的实例72
731 iTunes的模型72
732 iTunes的视图73
733 iTunes的控制74
74 使用MVC构架的Cocoa应用程序开发特点75
741 视图组件由Cocoa提供75
742 保持视图与模型间的相互独立 75
743 应用程序特有的功能由控制提供 75
744 只用创建模型以及控制的类 76
第8章 插座与动作77
81 视图与控制间的信息交换 77
82 插座与动作78
821 什么是插座78
822 什么是动作78
83 插座以及动作的连接 79
831 插座与动作的追加79
832 插座的连接80
833 动作的连接81
834 连接确认82
第9章 C语言语法基础 85
91 C语言概论85
911 C语言的发展过程 85
912 C语言的特点85
913 C源程序的结构特点86
914 C源程序的构成规则89
915 C语言的字符集89
916 C语言词汇90
92 数据类型92
921 基本数据类型92
922 基本运算符和表达式98
923 关系运算符和表达式101
924 逻辑运算符和表达式102
93 数组103
931 一维数组103
932 二维数组104
933 字符数组104
94 指针104
941 指针的基本概念105
942 指针变量的类型声明105
943 指针变量的赋值106
944 使用字符串指针变量与字符数组的区别106
95 C语言的输出语句printf()函数107
951 printf()函数调用的一般形式107__
952 格式字符串107
953 输出的实例109
96 控制语句110
961 if语句 110
962 switch语句113
963 while语句115
964 do…while语句116
965 for语句117
97 函数119
971 函数的语法120
972 函数的声明与实体121
973 可变参数122
974 标准函数库122
98 结构123
981 结构的定义123
982 结构类型变量的声明124
983 结构变量的取值与赋值125
99 在Xcode中创建学习C语言用的工程125
第10章 Objective-C的语法129
101 Objective-C的编程概论129
1011 Objective-C与C语言129
1012 Objective-C程序129
1013 类的声明与实体130
1014 创建Objective-C的测试工程130
102 类的声明135
1021 导入声明文件135
1022 类的声明136
1023 实例变量的声明137
1024 实例方法的声明137
103 编写类的实体142
1031 编写类的实体142
1032 编写方法代码143
1033 关于方法的声明144
104 对象专用变量类型144
1041 实例对象专用的变量类型144
1042 id类型145
1043 nil类型145
1044 在条件表达式中使用对象变量145
105 方法调用146
1051 实例方法的调用146
1052 类方法的调用147
1053 对象为nil的情况下148
106 命名规则148
1061 类的命名规则148
1062 实例变量的命名规则149
1063 方法的命名规则149
107 重新解析Cocoa的Hello World程序150
1071 AppControllerh150
1072 AppControllerm151
第11章 内存管理153
111 内存分配与释放153
112 与内存相关的问题154
1121 内存释放的时机154
1122 内存泄漏155
113 使用垃圾收集进行内存管理155
1131 垃圾回收155
1132 Objective-C与垃圾回收157
1133 垃圾回收功能有效化158
1134 垃圾回收编程的规则159
114 由参照统计实现的内存管理159
1141 参照统计的基本概念159
1142 retain和release方法160
1143 对象保持到释放的流程160
115 类的实例化162
1151 类的实例化与初始化162
1152 自动释放163
1153 创建实例的方法164
1154 实例的释放165
116 内存管理的规则166
1161 临时对象166
1162 内存管理经验总结168
第12章 字符串169
121 字符串专用类169
122 NSString与NSMutableString170
123 字符编码170
1231 什么是字符编码170
1232 NSString的字符代码为Unicode171
1233 NSStringEncoding171
124 字符串的生成172
1241 使用@""的形式创建新字符串172
1242 创建中文字符串173
1243 使用格式创建字符串174
125 NSRange176
126 字符串处理177
1261 计算字符串的长度177
1262 字符串的连接、插入和删除178
1263 字符串的比较181
1264 字符串的检索183
1265 抽取部分字符串184
127 读/写文本文件186
1271 读取文本文件186
1272 输出文本文件187
第13章 集合189
131 数组189
1311 NSArray与 NSMutableArray189
1312 数组的创建190
1313 数组的长度191
1314 通过索引取得对象192
1315 使用NSEnumerator取得对象193
1316 使用高速枚举法取得对象196
1317 对象的追加与删除197
132 字典199
1321 什么是字典类型199
1322 NSDictionary与 NSMutableDictionary200
1323 NSDictionary的创建200
1324 键与值的取得202
1325 键与值的追加203
133 包装类205
1331 什么是包装类205
1332 NSNumber205
134 对象的等价与同值208
1341 拥有相同值的对象208
1342 等价与同值的判定208
1343 在集合类中的应用210
135 集合类与参照统计210
1351 NSArray与参照统计210
1352 NSDictionary与参照统计212
第14章 XML应用213
141 XML概要213
1411 什么是XML213
1412 一种常用的XML实例——RSS213
142 XML的解析215
1421 解析及解析器215
1422 XML解析器的种类215
1423 树结构216
143 Cocoa中的XML解析器218
1431 NSXMLDocument，NSXMLNode和NSXMLElement218
1432 XML文档的解析器219
1433 Xpath221
1434 节点信息222
1435 节点的父子关系223
1436 属性值的取得225
第15章 表格视图227
151 表格视图227
1511 NSTableView与NSTableColumn227
1512 表格的构造229
152 数据资源229
1521 在表格中使用数据资源229
1522 数据资源的方法230
1523 NSTableView的方法231
153 实例231
1531 数据资源的设置238
1532 numberOfRowsInTableView:238
1533 tableView:objectValueForTableColumn:row:239
1534 单击Read按钮的处理代码242
第16章 UIKit框架简介及如何创建iPhone表格视图245
161 UIKit概要246
1611 UIKit框架的类一览表246
1612 UIKit框架与AppKit框架的区别249
162 创建测试UIKit类的试验工程250
1621 创建第一个iPhone应用程序——Hello World工程251
1622 修改Hello World工程使之成为不使用xib文件的实验工程256
163 创建最简单的表格261
1631 创建表262
1632 追加选择单元时运行的动作265
164 iPhone表格视图的相关类参考265
1641 UITableView类266
1642 UITableViewCell类272
1643 UITableViewController类279
1644 UITableViewDataSource协议类280
1645 UITableViewDelegate协议类284
第17章 常见的错误与警告287
171 什么是错误与警告287
172 Xcode中的错误与警告287
1721 错误与警告的显示方式288
1722 建立结果窗口288
1723 代码窗口中的显示289
173 经常会出现的错误信息290
1731 ‘ XXX’undeclared (first use in this function)290
1732 parse error before ‘XXX’token291
1733 invalid preprocessing directive #XXX291
1734 No Such file or directory292
1735 Undefined symbols292
174 经常会出现的警告信息293
1741 ‘XXX’may not respond to ‘YYY’ 293
1742 unused variable ‘XXX’294
1743 local declaration of ‘XXX’hides instance variable295
1744 incomplete implementation of class ‘XXX’296
1745 control reaches end of non-void function297
1746 passing argument n of ‘XXX’ assignment from
distinct Objective-C type298
第18章 调试方法299
181 缺陷与调试299
1811 什么是缺陷与调试299
1812 描述缺陷300
1813 缺陷的重现300
182 NSLog301
1821 使用NSLog输出调试信息301
1822 NSLog的格式302
183 调试工具304
1831 什么是调试工具304
1832 调试构建配置305
1833 断点与调试模式的启动305
1834 调试界面306
1835 调试的分步执行308
184 例外309
1841 什么是例外309
1842 捕捉例外309
1843 发生例外时停止运行312
1844 避免使用太多的例外313
第19章 应用程序的后期制作314
191 应用程序图标314
1911 制作图标的图片315
1912 图标格式文件的制作316
1913 向工程中追加图片文件317
192 应用程序的设置317
1921 什么是目标317
1922 与目标相关的应用程序设置318
1923 Infoplist321
193 本地化322
1931 什么是本地化322
1932 用户界面的本地化323
1933 应用程序名称的本地化326
1934 本地化的测试328
194 构建配置329
1941 什么是构建配置329
1942 将构建配置设为Release329
195 完成的应用程序330
附录A 加入iPhone Developer Program331
索引337