iOS 6应用开发实战

更多详情

内容简介: 《iOS 6应用开发实战》是目前iOS 6领域最全面系统和易于阅读的著作之一,有两大特点:第一,技术新颖,基于最新iOS 6技术撰写,系统讲解开发iPhone和iPad应用所需掌握的基础技术和高级技巧,以及其流程和方法;第二,易于阅读,从认知学角度进行内容规划,一个案例贯穿全书,不仅能从很大程度上降低学习的时间成本,降低阅读门槛,而且能至始至终让读者在动手实践中保持学习的热情,坚持把这《iOS 6应用开发实战》读完。
全书共22章,可分为两个部分:基础部分(1~13章)分别介绍了开发iOS应用前应该做的准备工作、Xcode 4的基本使用、Objective-C的基本语法、Interface Builder的基本操作、视图控制器、通过设备获取用户位置、列表、视图及视图控制器、各种控件、多媒体、偏好设置等知识,这些知识通过一个名称为MyDiary的应用完美地串联在一起,读者从一开始就能动手实践并从实践中掌握这些理论知识;高级部分(14~22章)则非常详细地讲解了iOS应用的架构、iOS应用的测试与调试、可滚动视图的创建、自动宣传和自动调整大小、表格视图的编辑、手势识别、警告、应用程序本地化、日历和事件等高级话题,是iOS开发工程师进阶修炼必须掌握的核心内容。

目录: 《iOS 6应用开发实战》
前  言
第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 《iOS 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 Interface 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

前言: 为什么要写这《iOS 6应用开发实战》
我在开始学习iOS开发之前一直从事着PHP和Flex的应用程序开发,因为四年前为苹果移动设备开发应用程序至少在国内毕竟还不是很热门。当时的互联网开发大多还是围绕着Web 2.0理念的开发以及各种社交网站上的Flash交互游戏开发。记得一次在回家的路上,我静静地思考这样一个问题:从现在开始,我是否要放弃多年驾轻就熟的语言,转而去一个全新的开发领域呢?挑战肯定是有的,但是挑战与机遇共存。就目前情况而言,iOS程序员的数量远远低于传统C、C++的人数。不仅如此,在笔者参加过的多次Adobe开发者大会上,与会人员的数量和那些人的热情是大家可以想象的(尽管笔者还没有真正看到过一款使用Flash或Flex开发的商业应用)。众所周知,虽然目前iOS设备在国内大量普及(不管是个人,还是机关、单位),但是真正符合国人需求的应用并不是很多,尤其是符合某一领域的商用、垂直化应用还远远不够,这就为iOS开发团队带来了巨大的机遇。因此在经过一段时间的学习和开发实践以后,便有了写这《iOS 6应用开发实战》的想法,主要想通过《iOS 6应用开发实战》让更多希望从事iOS开发的程序员尽快入门,同时为将来的创业打下良好的基础。
2012年9月19日,苹果第六代手机操作系统iOS 6.0正式发布,iOS 6 SDK(Software Development Kit)也随之放出,该SDK为我们进行应用程序开发提供了更多的功能和特性。其中包括全新的苹果地图,Siri发送短信、预约会议,与朋友分享照片流,Passbook优惠券处理和iPhone全新呼叫等功能。如果说从iOS 1.0到iOS 4.0苹果更多的是做系统深度开发,那么从iOS 5.0到iOS 6.0的时代就是广度的开发,与此同时操作系统的容量也在不断的变大。
截至目前,苹果对于iOS操作系统的更新和升级还在继续,这也就代表着我们对Objective-C和iOS开发的学习始终不会停止。新的iOS硬件设备可能会带动更多更好的应用程序出现,而这些应用程序的背后将是一个巨大的财富。希望大家一切从用户的角度出发,一步一个脚印去做,最终实现自己的梦想。
《iOS 6应用开发实战》特色
《iOS 6应用开发实战》以构建一个MyDiary项目的实践案例贯穿全书,将所有知识点融入到实践当中,使大家真正理解和掌握如何通过Xcode SDK和Objective-C语言来开发iOS应用程序。
在基础篇的学习中,可以了解到什么是iOS,什么是Xcode。作为一名iOS开发者需要什么软、硬件条件。然后就是如何通过Xcode和Objective-C来搭建一个能够记录文本、图片、声音,查看设备当前位置的MyDiary项目。还结合该项目讲授了如何使用表格来组织信息。
在高级篇中,大部分的内容都是针对之前所学内容的深入和扩展。包括如何组织表格,如何处理设备的旋转,多语言和地区的处理以及如何操作日历等。
读者对象
《iOS 6应用开发实战》适合具备以下几方面知识和硬件条件的群体阅读。
面向对象的开发经验,熟悉类、实例、方法、封装、继承、重写等概念。
有Objective-C或C、C++的开发经验。
有MVC设计模式开发经验。
有简单的图像处理的经验。
有一台Inter架构的Mac电脑(MacBook Pro、MacBook Air、Mac Pro或Mac Mini)。
如果加入了iOS开发者计划,还可以准备一台iOS移动设备。
如何阅读《iOS 6应用开发实战》
《iOS 6应用开发实战》逻辑上分为两个部分:
第1章到第13章为基础部分,通过构建一个MyDiary iPhone应用程序项目,向大家介绍了如何使用Xcode SDK开发工具及通过Objective-C语言编写一个可以记录文本、保存图片和声音的App。
第14章到第22章为高级部分,着重讲解iOS开发中可能会用到的高级功能,包括视图的旋转和滚动处理、表格的高级操作、多语言环境等。
《iOS 6应用开发实战》自始至终都通过MyDiary iPhone应用程序这个实际项目来展开的,所以建议初学者从第1章开始学习,以达到良好的学习效果。
勘误和支持
由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。书中的全部源文件可以从华章网站下载。如果你有更多的宝贵意见,也欢迎发送邮件至邮箱liuming_cn@qq.com,期待能够得到你们的真挚反馈。
致谢
首先要感谢伟大的可以改变这个世界的Steven Jobs,他的精神对我产生了非常大的影响。
感谢机械工业出版社华章公司的编辑杨福川老师,在这一年多的时间中始终支持我的写作,他的鼓励和帮助引导我顺利完成全部书稿。
最后感谢我的爸爸、妈妈、老婆、乐乐、张燕、赵霞、秦琼、王艳标、杨晓龙、刘天翔、梁涛,感谢他们对我的支持与帮助,并时时刻刻为我灌输着信心和力量!
谨以此书献给我最亲爱的家人,以及众多热爱iOS的朋友们!
刘铭

媒体评论: 如今的图书市场上,关于iOS开发的书很多,但是针对最新的iOS 6的图书还极少,本书算是一本;能让读者坚持把一整本书读完并觉得简单易读的就更少了,本书也算是一本。针对最新的技术、易于阅读是本书的两大特色,对于想系统学习iOS 6应用开发的读者而言,本书确实不可多得,强烈推荐!
—— 51CTO(www.51cto.com) 中国领先的IT技术网站