第1章 开发前的准备 1
1.1 iOS的历史 2
1.2 iOS 5和iOS 6的新特性 3
1.2.1 iCloud云服务 3
1.2.2 LLVM 3.0编译器 3
1.2.3 自动引用计数器 3
1.2.4故事板 4
1.2.5整合Twitter框架 4
1.2.6 iOS 5的其他特性 4
1.2.7 iOS 6的新特性 6
1.3 iOS设备的相关介绍 7
1.3.1各种iOS设备 7
1.3.2 iOS设备的显示分辨率 8
1.3.3 iOS应用程序与硬件的关系 9
1.3.4 iPhone的网络连接 9
1.3.5 iPhone的输入与反馈机制 10
1.4成为一名iOS开发者 10
1.4.1 注册成为Apple Developer 11
1.4.2 加入iOS开发者计划 13
1.5下载并安装iOS开发工具 14
1.6本书实战项目简介 16
第2章认识Xcode 4 17
2.1 Xcode的欢迎界面 18
2.2使用模板创建MyDiary项目 19
2.3 Xcode的工作界面 21
2.3.1 Xcode工具栏 21
2.3.2导航区域 22
2.3.3 编辑区域 25
2.3.4通用区域 26
2.4使用代码编辑器 28
2.5 iOS模拟器 30
2.5.1 iOS模拟器的特性 31
2.5.2模拟器中iOS系统的基本设置 32
2.5.3在模拟器中安装和卸载应用程序 33
2.5.4 iOS模拟器的限制 34
2.6管理MyDiary项目的配置选项 34
2.6.1 设置设备的支持方向 35
2.6.2设置应用程序的图标 36
2.6.3设置显示状态栏 37
2.6.4 设置应用程序的启动画面 38
第3章 有关Objective-C的知识储备 40
3.1内存管理基础 41
3.1.1 C语言中的内存管理 42
3.1.2 面向对象的内存管理 42
3.2引用计数器 43
3.2.1 使用引用计数器 44
3.2.2 使用autorelease 48
3.3 类的setter与getter方法 51
3.4 dealloc方法 54
3.5使用properties简化访问器 54
3.6手动内存管理的规则 56
3.7 自动引用计数器 57
3.7.1 强引用 59
3.7.2 弱引用 60
第4章 Xcode中的Interface Builder 61
4.1 了解Interface Builder 62
4.1.1 Interface Builder中的关联 62
4.1.2故事板 63
4.2创建用户界面 66
4.2.1 对象库 66
4.2.2 向视图添加界面元素 67
4.2.3 Intetface Builder的布局工具 68
4.3 自定义界面的外观 71
4.3.1 属性检查窗口 71
4.3.2 设置辅助功能 72
4.3.3 在模拟器中使用辅助功能 73
4.4与代码进行关联 74
4.4.1要完成的效果 74
4.4.2 outlet变量和action方法简介 75
4.4.3 为ViewController类添加成员变量 75
4.4.4创建outlet关联 76
4.4.5 创建action关联 77
4.4.6使用快速检查器查看关联 78
第5章视图控制器 80
5.1 MVC设计模式简介 81
5.2 MyDiary项目中的“关于作者”控制器 82
5.2.1 为“关于作者”控制器准备照片素材 83
5.2.2 设置Segmented Control 84
5.2.3为控制器准备相关数据 85
5.2.4 UIImage的类方法介绍 87
5.3视图控制器的重构 88
5.4标签栏控制器 90
5.4.1标签栏和其中的标签 90
5.4.2在故事板中添加标签栏控制器 91
5.4.3 设置标签栏配置条目 94
5.5与视图控制器相关的方法介绍 96
第6章通过设备获取用户位置 99
6.1项目、目标和框架 100
6.2 Core Location简介 101
6.3创建LocationViewController控制器 103
6.4 Core Location框架 105
6.4.1 从CLLocationManager获取信息 107
6.4.2 在程序中确认定位服务是否可用 109
6.4.3 CLLocation类 111
6.5委托 112
6.5.1 协议 112
6.5.2 协议方法 114
6.5.3委托、控制器和内存管理 115
6.6使用MapKit 116
6.6.1 高德地图iOS API 116
6.6.2使用高德iOS API显示地图 116
6.6.3 在真机上测试高德地图 121
第7章创建日记列表 123
7.1表格视图的组成部分 124
7.2准备要显示的数据 124
7.2.1 向Diary类的成员变量赋值 125
7.2.2对象的分配和初始化 126
7.2.3 在故事板中添加表格视图 128
7.2.4 Arrays类 131
7.3 UITableViewController类 133
7.3.1 剖析DiaryListViewController 134
7.3.2 UITableView的数据源 134
7.4 UITableViewCell类 135
7.4.1 创建与检索单元格 137
7.4.2 UITableViewCell的复用 140
7.5增加点击交互功能 141
第8章通过导航控制器显示多个视图 144
8.1 使用导航控制器进行视图间的导航 145
8.1.1 导航控制器介绍 146
8.1.2创建导航控制器 147
8.1.3 导航栏 151
8.2增加日记的详细页面 155
8.3使用UINavigationController进行导航 159
8.3.1 推出视图控制器 159
8.3.2在视图控制器间传递数据 160
第9章 为日记添加文本记录功能 162
9.1创建新的视图控制器 163
9.1.1 创建CreateDiaryViewController类 163
9.1.2创建Create Diary View Controller场景 164
9.1.3 建立IBOutlet和IBAction关联 168
9.1.4在应用程序中呈现和销毁CreateDiaryViewController 170
9.2几种常用的文本控件 175
9.2.1 UILabel控件 175
9.2.2 UITextField控件 176
9.2.3 UITextView对象 177
9.3虚拟键盘的使用 178
9.4 NSDate及其相关类 180
9.5 日记记录传回DiaryListViewController 181
第10章为日记本添加照相功能 184
10.1 为项目添加新的视图控制器 185
10.1.1 创建CameraViewController类 185
10.1.2 CameraViewController的呈现与销毁 187
10.2使用UIImagePickerController进行拍照 188
10.3在应用程序中存储图片 192
10.3.1 NSDictionary类 193
10.3.2创建和使用键 195
10.3.3 在Detail Diary View Controller场景中显示日记照片 198
第11章保存与载入日记 200
11.1应用程序沙箱 201
11.2创建单例模式DiaryStore类 202
11.3获取指定目录的路径 204
11.4 归档 205
11.4.1 对象的归档 205
11.4.2对象的解档 206
11.5应用程序的状态与过渡 209
11.6使用NSData将数据写入文件系统 212
11.7在Mac系统中查看应用程序的资源 214
第12章在日记中录制和播放声音 216
12.1创建录音机的界面 218
12.2声音的录制 220
12.2.1 保存录制的音频文件 220
12.2.2 完善RecordViewController控制器 224
12.2.3按照用户的要求进行录音 226
12.3声音的播放 227
12.4中断的处理 229
12.4.1 在播放声音时处理中断 229
12.4.2在录制声音时处理中断 230
12.5 在Detail Diary View Controller场景中播放声音 231
第13章应用程序的偏好设置 234
13.1 了解设置绑定资源包 235
13.2为MyDiary添加设置绑定资源包 235
13.2.1 向项目中添加设置绑定资源包 236
13.2.2设置属性列表 236
13.2.3添加文本框设置 239
13.2.4添加密码文本框设置 241
13.2.5添加多值字段 241
13.2.6添加开关设置 243
13.2.7添加滑块设置 243
13.2.8设置滑块图标 243
13.2.9增加设置子视图 245
13.3 在应用程序中读取偏好设置内容 247
第14章iOS应用程序架构介绍 250
14.1 Objective-C和Cocoa Touch 251
14.1.1 Cocoa Touch层 251
14.1.2 Foundation框架 252
14.1.3 iOS中的各种框架 252
14.2 iPhone应用程序的架构 253
14.2.1 main.m文件 254
14.2.2 自动释放池 254
14.2.3 UIApplicationMain()函数 255
14.2.4应用程序委托 256
14.2.5视图控制器 257
14.3 iOS应用程序的组成 258
14.3.1 应用程序文件夹的结构 258
14.3.2 可执行文件 258
14.3.3 Info.plist文件 258
14.3.4程序图标和启动画面 259
14.3.5 XIB文件 259
14.3.6 IPA文档 259
14.4平台的限制 260
第15章应用程序的调试 262
15.1 iOS帮助文档 263
15.1.1 快速安装帮助文档 264
15.1.2 帮助文档的窗口 265
15.1.3 类的文档页面介绍 268
15.2代码调试器 269
15.2.1 断点的设置 270
15.2.2调试代码 272
15.2.3 调试控制台 274
15.2.4检视对象 276
第16章创建可滚动的视图 277
16.1 UIScrollView类 278
16.2 Scroll View和Text Field 283
16.2.1 完善Scroll View Controller中的界面元素 283
16.2.2编写与滚动相关的代码 284
16.3消息通知中心 288
16.4 完善CreateDiaryViewController控制器 290
16.4.1 使用Scroll View 290
16.4.2 在Text View中让键盘消失 293
第17章 自动旋转和自动调整大小 296
17.1 自动旋转的机制 297
17.1.1 点、像素和视网膜显示 298
17.1.2旋转的方式 298
17.2通过autosize属性处理旋转 298
17.2.1 创建一个新的视图控制器 299
17.2.2 配置所支持的方向 299
17.2.3 在控制器中设定支持方向 300
17.2.4使用autosize属性设计界面 303
17.2.5 设置按钮的autosize属性 305
17.3旋转时重构视图 306
17.3.1 创建和关联Outlet 307
17.3.2旋转时移动按钮 307
17.4旋转时切换视图 309
17.4.1 设计两个视图 309
17.4.2执行旋转时的切换 312
17.4.3 改变Outlet Collections 314
第18章编辑表格视图 315
18.1表格视图的编辑模式 316
18.2使用不同类型的附件指示器 317
18.3创建自定义的单元格附件指示器 319
18.4显示具有层级的表格视图 321
18.5为表格创建Header和Footer 322
18.5.1 创建头视图 323
18.5.2 载入XIB文件中的视图 324
18.5.3 设置头视图 325
18.5.4设置脚视图 326
18.6删除行 328
18.7移动表格视图中的行 329
18.8在表格视图中使用刷新控件 331
第19章手势识别 333
19.1多点触摸概述 334
19.1.1 基本的操作手势 335
19.1.2手势识别的分类和状态 335
19.1.3 触摸事件所响应的方法 336
19.2拖曳手势的检测 336
19.2.1 简单的手势识别 337
19.2.2 UIPanGestureRecognizer类 339
19.3轻划手势的检测 340
19.4旋转手势的检测 342
19.5长按手势的检测 344
19.6掐捏手势的检测 345
第20章警告用户 348
20.1 通过警告对话框与用户进行交互 349
20.1.1 构建简单的Alert警告对话框 349
20.1.2设置Alert的delegate 353
20.1.3显示警告对话框 354
20.1.4警告的类型 354
20.2在警告对话框中呈现菜单 356
第21章应用程序的本地化 359
21.1 使用NSLocale将项目国际化 360
21.2本地化资源 366
21.2.1 本地化资源文件 366
21.2.2 使用NSLocalizedString和String Tables 369
第22章 日历和事件 373
22.1 Event Kit框架 374
22.1.1 通过CalDAV同步Google日历 374
22.1.2获取日历列表 375
22.1.3 向日历中添加事件 380
22.1.4访问日历的事件列表 382
22.1.5从日历中移除事件 386
22.1.6添加重复发生的事件 389
22.2 Event Kit UI框架 392