本书有两大特点:第一,技术新颖,基于最新iOS 6技术撰写,系统讲解开发iPhone和iPad应用所需掌握的基础技术和高级技巧,以及其流程和方法;第二,易于阅读,从认知学角度进行内容规划,一个案例贯穿全书,不仅能从很大程度上降低学习的时间成本,降低阅读门槛,而且还能至始至终让读者在动手实践中保持学习的热情,坚持把这本书读完。
全书共22章,分为两个部分:基础篇(1~13章)分别介绍了开发iOS应用前应该做的准备工作、Xcode 4的基本使用、Objective-C的基本语法、Interface Builder的基本操作、视图控制器、通过设备获取用户位置、列表、视图及视图控制器、各种控件、多媒体、偏好设置等知识,这些知识通过一个名称为MyDiary的应用完美地串联在一起,读者从一开始就能动手实践并从实践中掌握这些理论知识;高级篇(14~22章)则非常详细地讲解了iOS应用的架构、iOS应用的测试与调试、可滚动视图的创建、自动宣传和自动调整大小、表格视图的编辑、手势识别、警告、应用程序本地化、日历和事件等高级话题,是iOS开发工程师进阶修炼必须掌握的核心内容。
封面图
目录
- 前言
- 第1章开发前的准备 / 1
- 1.1iOS的历史 / 2
- 1.2iOS 5 和iOS 6的新特性 / 3
- 1.2.1iCloud云服务 / 3
- 1.2.2LLVM 3.0编译器 / 3
- 1.2.3自动引用计数器 / 3
- 1.2.4故事板 / 4
- 1.2.5整合Twitter框架 / 4
- 1.2.6iOS 5 的其他特性 / 4
- 1.2.7iOS 6的新特性 / 6
- 1.3iOS设备的相关介绍 / 7
- 1.3.1各种iOS设备 / 7
- 1.3.2iOS设备的显示分辨率 / 8
- 1.3.3iOS应用程序与硬件的关系 / 9
- 1.3.4iPhone的网络连接 / 9
- 1.3.5iPhone的输入与反馈机制 / 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.1Xcode的欢迎界面 / 18
- 2.2使用模板创建MyDiary项目 / 19
- 2.3Xcode的工作界面 / 21
- 2.3.1Xcode工具栏 / 21
- 2.3.2导航区域/ 22
- 2.3.3编辑区域 / 25
- 2.3.4通用区域 / 26
- 2.4使用代码编辑器 / 28
- 2.5iOS模拟器 / 30
- 2.5.1iOS模拟器的特性 / 31
- 2.5.2模拟器中iOS系统的基本设置 / 32
- 2.5.3在模拟器中安装和卸载应用程序 / 33
- 2.5.4iOS模拟器的限制 / 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.1C语言中的内存管理 / 42
- 3.1.2面向对象的内存管理 / 42
- 3.2引用计数器 / 43
- 3.2.1使用引用计数器 / 44
- 3.2.2使用autorelease / 48
- 3.3类的setter与getter方法 / 51
- 3.4dealloc方法 / 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.1Interface Builder中的关联 / 62
- 4.1.2故事板 / 63
- 4.2创建用户界面 / 66
- 4.2.1对象库 / 66
- 4.2.2向视图添加界面元素 / 67
- 4.2.3Interface 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.2outlet变量和action方法简介 / 75
- 4.4.3为ViewController类添加成员变量 / 75
- 4.4.4创建outlet关联 / 76
- 4.4.5创建action关联 / 77
- 4.4.6使用快速检查器查看关联 / 78
- 第5章视图控制器 / 80
- 5.1MVC设计模式简介 / 81
- 5.2MyDiary项目中的“关于作者”控制器 / 82
- 5.2.1为“关于作者”控制器准备照片素材 / 83
- 5.2.2设置Segmented Control / 84
- 5.2.3为控制器准备相关数据 / 85
- 5.2.4UIImage的类方法介绍 / 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.2Core Location简介 / 101
- 6.3创建LocationViewController控制器 / 103
- 6.4Core Location框架 / 105
- 6.4.1从CLLocationManager获取信息 / 107
- 6.4.2在程序中确认定位服务是否可用 / 109
- 6.4.3CLLocation类 / 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.4Arrays类 / 131
- 7.3UITableViewController类 / 133
- 7.3.1剖析DiaryListViewController / 134
- 7.3.2UITableView的数据源 / 134
- 7.4UITableViewCell类 / 135
- 7.4.1创建与检索单元格 / 137
- 7.4.2UITableViewCell的复用 / 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.1UILabel控件 / 175
- 9.2.2UITextField控件 / 176
- 9.2.3UITextView对象 / 177
- 9.3虚拟键盘的使用 / 178
- 9.4NSDate及其相关类 / 180
- 9.5日记记录传回DiaryListViewController / 181
- 第10章为日记本添加照相功能 / 184
- 10.1为项目添加新的视图控制器 / 185
- 10.1.1创建CameraViewController类 / 185
- 10.1.2CameraViewController的呈现与销毁 / 187
- 10.2使用UIImagePickerController进行拍照 / 188
- 10.3在应用程序中存储图片 / 192
- 10.3.1NSDictionary类 / 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.1Objective-C和Cocoa Touch / 251
- 14.1.1Cocoa Touch层 / 251
- 14.1.2Foundation框架 / 252
- 14.1.3iOS中的各种框架 / 252
- 14.2iPhone应用程序的架构 / 253
- 14.2.1main.m文件 / 254
- 14.2.2自动释放池 / 254
- 14.2.3UIApplicationMain()函数 / 255
- 14.2.4应用程序委托 / 256
- 14.2.5视图控制器 / 257
- 14.3iOS应用程序的组成 / 258
- 14.3.1应用程序文件夹的结构 / 258
- 14.3.2可执行文件 / 258
- 14.3.3Info.plist文件 / 258
- 14.3.4程序图标和启动画面 / 259
- 14.3.5XIB文件 / 259
- 14.3.6IPA文档 / 259
- 14.4平台的限制 / 260
- 第15章应用程序的调试 / 262
- 15.1iOS帮助文档 / 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.1UIScrollView类 / 278
- 16.2Scroll 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.2UIPanGestureRecognizer类 / 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.1Event 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.2Event Kit UI框架 / 392