第1讲 配置开发环境 1
1.1 Mac应用程序开发环境 1
1.2 iPhone应用程序开发环境 2
1.3查看安装目录内容 4
1.3.1启动Xcode 5
1.3.2启动Interface Builder 6
1.4 Mac中的基本操作 6
1.4.1弹出菜单的显示方法 6
1.4.2工具条的定制 8
第2讲 应用程序与框架 10
2.1关于应用程序 10
2.1.1应用程序的种类 11
2.1.2关于iPhone应用程序 12
2.2框架 13
2.2.1简单的【Hello World】程序 13
2.2.2框架的出现 13
2.2.3编程语言与框架的关系 14
2.3 Mac OS X以及iPhone SDK中的框架 14
2.3.1框架的安装目录 14
2.3.2 Cocoa与Carbon 15
2.3.3应用程序中使用的框架 16
2.4 Cocoa与Carbon的发展轨迹 18
第3讲 Cocoa与Objective-C 20
3.1框架的使用 20
3.1.1关于API 20
3.1.2 API与编程语言的关系 21
3.2 Objective-C的发展史 22
3.3用于其他语言中的Cocoa API 23
3.3.1通过桥调用Cocoa 23
3.3.2是否应提倡在Objective-C以外的语言中调用Cocoa API的开发方式 24
3.4解答与Objective-C相关的几个疑问 25
第4讲 开发工具 27
4.1 Xcode 27
4.1.1综合开发环境Xcode的功能 27
4.1.2工程窗口 28
4.1.3文本编辑器的功能 32
4.1.4开发者手册 35
4.2 Interface Builder 36
4.3 Dashcode 37
4.4 iPhone模拟器 38
4.5其他工具 38
4.5.1 FileMerge 38
4.5.2 Icon Composer 39
4.5.3 Property List Editor 39
4.6 Mac或iPhone应用程序开发的流程 39
4.6.1准备应用程序用的材料 39
4.6.2建立步骤 41
4.6.3 gcc 42
第5讲 Cocoa环境下的面向对象编程 43
5.1面向对象的基本概念术语 43
5.1.1类 44
5.1.2实例 44
5.1.3实例变量 44
5.1.4方法 45
5.1.5继承 45
5.1.6相互关系 46
5.1.7对象 46
5.2在Cocoa实例中理解基本术语 47
5.2.1通过按钮配置理解基本术语 47
5.2.2文本输入框的继承关系 48
第6讲 Hello World应用程序 49
6.1 Hello World程序 49
6.2启动Xcode创建工程 49
6.3编辑代码 51
6.4启动Interface Builder设计用户界面 52
6.4.1 xib文件 52
6.4.2 Interface Builder窗口 53
6.4.3设计Hello World的用户界面 55
6.5连接插座与动作 55
6.6完成Hello World App Delegate的代码编写 58
6.7建立与运行 59
6.8开发步骤再回顾 61
第7讲MVC构架 62
7.1 Hello World位用程序开发流程中包含的信息 62
7.2什么是MVC构架 62
7.2.1视图层 63
7.2.2模型层 63
7.2.3控制层 64
7.3使用MVC构架的实例 64
7.3.1 iTunes的模型 64
7.3.2 iTunes的视图 65
7.3.3 iTunes的控制 66
7.4使用MVC构架的Cocoa应用程序开发特点 66
7.4.1视图组件由Cocoa提供 66
7.4.2保持视图与模型间的相互独立 67
7.4.3应用程序特有的功能由控制提供 67
7.4.4只用创建模型以及控制的类 67
第8讲 插座与动作 68
8.1视图与控制间信息交换 68
8.2插座与动作 69
8.2.1什么是插座 69
8.2.2什么是动作 69
8.3插座与动作的连接 70
8.3.1插座与动作的追加 70
8.3.2插座的连接 71
8.3.3动作的连接 72
8.3.4连接确认 73
第9讲Objective-C的语法 75
9.1 Objective-C的编程概论 75
9.1.1 Objective-C与C语言 75
9.1.2 Objective-C程序 75
9.1.3类的声明与实体 76
9.1.4创建Objective-C的测试工程 76
9.2类的声明 81
9.2.1导入声明文件 81
9.2.2类的声明 82
9.2.3实例变量的声明 82
9.2.4实例方法的声明 83
9.3编写类的实体 87
9.3.1编写类的实体 87
9.3.2编写方法代码 87
9.3.3关于方法的声明 88
9.4对象专用变量类型 88
9.4.1实例对象专用的变量类型 88
9.4.2 id类型 89
9.4.3 nil类型 89
9.4.4在条件表达式中使用对象变量 89
9.5方法调用 90
9.5.1实例方法的调用 90
9.5.2类方法的调用 91
9.5.3对象为nil的情况 92
9.6命名规则 92
9.6.1类的命名规则 92
9.6.2实例变量的命名规则 93
9.6.3方法的命名规则 93
9.7重新解析Cocoa的Hello World程序 94
9.7.1 HelloWorldAppDelegate.h 94
9.7.2 HelloWorldAppDelegate.m 95
第10讲 内存管理 98
10.1内存分配与释放 98
10.2与内存相关的问题 99
10.2.1内存释放的时机 99
10.2.2内存泄漏 100
10.3使用垃圾收集进行内存管理 100
10.3.1垃圾回收 100
10.3.2 Objective-C与垃圾回收 102
10.3.3垃圾回收功能有效化 103
10.3.4垃圾回收编程的规则 103
10.4由参照统计实现的内存管理 104
10.4.1参照统计的基本概念 104
10.4.2 retain、release方法 104
10.4.3对象保持到释放的流程 105
10.5类的实例化 106
10.5.1类的实例化与初期化 107
10.5.2自动释放 108
10.5.3创建实例的方法 108
10.5.4实例的释放 109
10.6内存管理的规则 110
10.6.1临时对象 110
10.6.2内存管理经验总结 111
第11讲 字符串 113
11.1字符串专用类 113
11.2 NSString与NSMutableString 113
11.3字符编码 114
11.3.1什么是字符编码 114
11.3.2 NSString的字符代码为Unicode 115
11.3.3 NSStringEncoding 115
11.4字符串的生成 116
11.4.1使用【@“”】的形式创建新字符串 116
11.4.2创建中文字符串 116
11.4.3使用格式创建字符串 118
11.5 NSRange 119
11.6字符串处理 120
11.6.1计算字符串的长度 120
11.6.2字符串连接、插入、删除 121
11.6.3字符串的比较 124
11.6.4字符串的检索 125
11.6.5抽取部分字符串 126
11.7读写文本文件 127
11.7.1读取文本文件 127
11.7.2文本文件输出 128
第12讲 集合 130
12.1数组 130
12.1.1 NSArray与NSMutableArray 130
12.1.2数组的创建 131
12.1.3数组的长度 132
12.1.4通过索引取得对象 132
12.1.5使用NSEnumerator取得对象 133
12.1.6使用高速枚举取得对象 136
12.1.7对象的追加与删除 136
12.2字典 138
12.2.1什么是字典类型 138
12.2.2 NSDictionary与NSMutableDictionary 139
12.2.3 NSDictionary的创建 139
12.2.4键与值的取得 141
12.2.5键与值的追加 142
12.3包装类 143
12.3.1什么是包装类 143
12.3.2 NSNumber 144
12.4对象的等价与同值 146
12.4.1拥有相同值的对象 146
12.4.2等价与同值的判定 146
12.4.3在集合类中的应用 147
12.5集合类与参照统计 148
12.5.1 NSArray与参照统计 148
12.5.2 NSDictionary与参照统计 149
第13讲XML应用 150
13.1 XML概要 150
13.1.1什么是XML 150
13.1.2一种常用的XML实例——RSS 150
13.2 XML的解析 151
13.2.1解析及解析器 151
13.2.2 XML解析器的种类 152
13.2.3树结构 153
13.3 Cocoa的XML解析器 154
13.3.1 NSXMLDocument、NSXMLNode、NSXMLElement 154
13.3.2 XML文档的解析器 155
13.3.3 Xpath 157
13.3.4节点信息 158
13.3.5节点的父子关系 159
13.3.6属性值的取得 161
13.4 iPhone应用软件中的XML解析实例 162
13.4.1第三方API及实例概要 162
13.4.2创建并完成RSS文件解析程序 163
第14讲UIKit框架简介及iPhone应用程序基础类 168
14.1 UIKit要 168
14.1.1 UIKit类列表 168
14.1.2 iPhone Hello World程序 171
14.1.3不使用Interface Builder的Hello World程序 175
14.1.4在Xcode 4中创建Hello World程序 180
14.2画面构成基础——UIView 184
14.2.1 UIView概要 184
14.2.2 UIView嵌套 187
14.3 UIViewController与画面控制 195
14.3.1使用UIViewController实现简单的画面切换 195
14.3.2使用UITabBarController实现并列画面跳转 200
14.3.3使用UINavigationController实现多层画面跳转 204
14.3.4跳转到任意画面 210
14.3.5模态(modal)画面的显示方法 212
第15讲iPhone应用程序中的事件响应 215
15.1事件响应 215
15.1.1按钮的触摸 215
15.1.2响应方法的定义 217
15.1.3滑块的滑动 218
15.2 UIResponder 221
15.2.1画面触摸的检测 221
15.2.2标签触摸的检测 222
15.2.3响应链 224
15.2.4触摸系列最终处理及取消 228
15.3二次触碰 229
15.4手势 232
15.4.1拖动检测 232
15.4.2滑动检测 236
15.4.3快速滑动检测 240
15.5多点触摸 243
15.5.1检测多点触摸 243
15.5.2检测双指滑动 244
15.5.3检测扩大/缩小 246
15.6振动 249
15.6.1检测振动 249
第16讲 常用UI控件 252
16.1标签(UILabel) 252
16.1.1文本与对齐方式的设置 252
16.1.2标签颜色与文本颜色的修改 253
16.1.3改变字体 254
16.1.4字体尺寸的自动调整 254
16.1.5多行字符串 255
16.1.6换行与省略 256
16.1.7高亮时的文本颜色 256
16.1.8阴影显示 256
16.1.9绘制方法的定制 258
16.2按钮(UIButton) 259
16.2.1按钮的配置与触摸检测 259
16.2.2按钮的种类 259
16.2.3按钮的状态及标题变化 260
16.2.4按钮触摸时的阴影反转 261
16.2.5按钮触摸时的背景闪烁 261
16.2.6在按钮中追加图片 262
16.2.7设置按钮背景图片 263
16.2.8调整按钮的边间距 264
16.2.9设置标题的换行/省略 265
16.3文本输入框(UITextField) 266
16.3.1文本输入框的显示 266
16.3.2键盘的显示/隐藏 266
16.3.3键盘的各种设置 267
16.3.4文本输入框的边框线 267
16.3.5文本的横向与纵向的调整 267
16.3.6文本输入框的字体及颜色 268
16.3.7提示信息的设置 269
16.3.8清空按钮的显示 269
16.3.9背景图片的设置 270
16.3.10 UIView的追加 270
16.3.11文本输入框的状态监视 272
16.4开关(UISwitch) 272
16.5选择控件(UISegmentedController) 274
16.5.1选择控件的使用方法 274
16.5.2选择控件的种类 276
16.5.3不显示选择状态 276
16.5.4选择控件的颜色变更 276
16.5.5使用图标的选择控件 277
16.5.6修改选项内容的显示位置 278
16.5.7设置选项的非活性 278
16.5.8选项的插入与删除 278
16.6滑块(UISlider) 280
16.6.1滑块的使用方法 280
16.6.2滑块值的通知时机 281
16.6.3向滑块中追加图标 281
16.6.4滑块的定制 282
16.7日期时刻选择框(UIDatePicker) 284
16.7.1日期时刻选择框的使用 284
16.7.2以动画形式改变日期 285
16.7.3设置间隔及最小/最大值 285
16.7.4日期选择框的种类 286
16.7.5定制日期选择框 287
第17讲 表格视图(UITableView) 290
17.1表格显示 290
17.1.1最简单的表格显示 290
17.1.2单元选择时的动作 293
17.1.3表格的分段显示 294
17.1.4表格的分组显示 297
17.1.5段脚的显示 299
17.1.6索引的活用 299
17.2单元的定制 301
17.2.1单元尺寸及颜色的修改 301
17.2.2单元分隔线的修改 302
17.2.3追加图片 303
17.2.4追加细节标签 305
17.2.5追加附件 306
17.2.6追加自定义附件 308
17.2.7追加仅编辑模式时显示的附件 309
17.2.8追加控件 311
17.2.9定制单元背景 315
第18讲 使用SQLite数据库 317
18.1 SQLite数据库及使用SQLite数据库的前期准备 317
18.1.1 SQLite数据库概要 317
18.1.2使用SQLite数据库的前期准备 318
18.2创建数据库及表格 319
18.3连接数据库 321
18.4数据检索 324
18.5数据的追加与删除 328
18.6数据库更新 332
18.7使用Core Data进行数据的追加、删除 335
18.7.1 Core Data的优点 335
18.7.2创建使用Core Data的应用程序 336
18.7.3改造Core Data的数据模型 337
18.7.4修改数据登录与保持代码 341
18.7.5数据删除代码 342
18.8追加编辑数据画面 342
18.9添加排序项目 345
第19讲 调试方法 349
19.1缺陷与调试 349
19.1.1什么是缺陷与调试 349
19.1.2描述缺陷 350
19.1.3缺陷的重现 350
19.2 NSLog 351
19.2.1使用NSlog输出调试信息 351
19.2.2 NSLog的格式 353
19.3调试工具 354
19.3.1什么是调试工具 355
19.3.2调试构建配置 355
19.3.3断点与调试模式的启动 356
19.3.4调试界面 356
19.3.5调试的分步执行 358
19.4例外 359
19.4.1什么是例外 359
19.4.2捕捉例外 360
19.4.3发生例外时停止运行 362
19.4.4避免使用太多的例外 362
第20讲 使用iPhone终端进行测试 364
20.1 iPhone Developer Program 364
20.1.1 【iPhone Developer Program】的会员种类 364
20.1.2 【iPhone Developer Program】的注册手续 365
20.1.3关于【Apple ID】 365
20.1.4 【iPhone Developer Program】的付款及认证手续 366
20.2在实际iPhone手机上的调试 366
索引 379