编辑推荐
DevDiv移动开发社区版主、资深会员联合编写
章节设置全面涵盖iOS应用开发技术要点
原创案例细致呈现作者实际开发经验
内容简介
iOS是移动开发三大平台之一。是DevDiv移动开发社区版主、资深会员继成功推出《移动开发全平台解决方案——Android/iOS/Windows Phone》和《Windows Phone开发实战体验(应用+游戏)》后的又一力作。
《iOS开发实战体验》章节设置全面涵盖iOS应用开发技术要点,原创案例细致呈现作者实际开发经验。具体包括iOS开发框架、Object-C高级知识、MVC设计和Push消息、视图高级使用技巧、数据持久化、TableView使用、文件I/O、硬件和通信、iOS多媒体、定位和地图、网络编程、连接到互联网、多线程编程、2D和3D绘图编程、调试和优化等内容。
作者简介
DevDiv移动开发社区,DevDiv覆盖移动开发主流平台Android、iOS、Windows Phone、Windows 8、HTML5和Symbian等,集资讯、论坛、博客、猎头服务、技术培训于一体,是国内最具人气的综合性移动开发社区。
目录
第1章 iOS开发框架
1.1 苹果产品和重要的事件
1.2 应用商店——App Store
1.3 iOS软件的体系结构
1.3.1 核心操作系统层(Core OS)
1.3.2 核心服务层(Core Service)
1.3.3 媒体层(Media)
1.3.4 可轻触层(Cocoa Touch)
1.4 应用程序运行周期
1.4.1 应用程序的生命周期
1.4.2 应用程序的入口
1.4.3 应用程序的委托
1.4.4 加载主Nib文件
1.4.5 事件处理周期
1.5 应用程序运行环境
1.5.1 应用程序沙箱
1.5.2 自动休眠定时器
1.6 iOS软件设计规范
1.6.1 平台间的差异
1.6.2 3种应用程序样式
1.7 iOS开发工具——Xcode
第2章 Object-C高级知识
2.1 Object-C语言介绍
2.1.1 数据类型与表达式
2.1.2 流程控制
2.1.3 类与结构
2.2 类别(Category)介绍
2.2.1 认识类别(Category)
2.2.2 扩展NSString
2.2.3 扩展NSDictionary
2.2.4 扩展NSArray
2.2.5 Object-C与C++混合编程
2.2.6 静态库
第3章 MVC设计和Push消息
3.1 MVC框架设计
3.1.1 MVC设计思想
3.1.2 iPhone开发中的MVC
3.1.3 iPhone中MVC的实现
3.2 通知中心
3.2.1 NSNotification类
3.2.2 Notifications的常见误解
3.3 Push机制
3.3.1 Push消息需要的条件
3.3.2 在代码中使用Push消息
3.3.3 通过Mac发送Push消息
3.3.4 通过iPhone发送Push消息
第4章 视图高级使用技巧
4.1 界面工具Interface Builder
4.2 定制基础控件
4.2.1 定制UIButton
4.2.2 定制UIPickerView以实现隐藏功能
4.3 动画特效
4.3.1 UIViewAnimation动画
4.3.2 使用公有CATransition实现动画效果
4.3.3 使用私有CATransition实现动画效果
4.4 页面布局——横竖屏处理
第5章 数据持久化
5.1 Plist文件操作
5.2 NSUserDefaults操作
5.3 SQLite数据库操作
5.4 Core Data文件操作
5.4.1 CoreData特性
5.4.2 为何要使用Core Data
5.4.3 关于Core Data的常见误解
5.4.4 建立数据库模型
5.4.5 创建实体类
5.4.6 数据库操作
第6章 TableView使用
6.1 UITableView的组成及样式
6.2 UITableView的定义
6.3 UITableView的数据源
6.3.1 UITableViewDataSource协议
6.3.2 表格视图的实现
6.3.3 表格单元
6.3.4 创建表格单元的数据源
6.4 UITableView的委托
6.5 UITableView的编辑
6.6 UITableView实现气泡效果的表格
6.7 UITableView拖动以显示更多数据
第7章 文件I/O
7.1 文件系统
7.2 文件管理
7.2.1 读取并显示对应目录下的文件
7.2.2 获取文件属性信息
7.2.3 创建文件夹
7.2.4 创建文件
7.2.5 删除文件
7.3 本地数据存储规则
第8章 硬件和通信
8.1 摄像头
8.1.1 拍照
8.1.2 摄像
8.1.3 定制拍照界面
8.2 加速度计
8.2.1 加速度计原理
8.2.2 加速度计使用
8.3 陀螺仪
8.3.1 陀螺仪原理
8.3.2 陀螺仪使用
8.4 调用通讯录
8.4.1 读取通讯录
8.4.2 编辑通讯录
8.5 打电话
8.6 发短信
8.7 发邮件
第9章 iOS多媒体
9.1 图像
9.1.1 加载UIImage
9.1.2 UIImageView
9.1.3 访问照片
9.2 声音
9.2.1 System Sound Services
9.2.2 音频
9.3 视频
第10章 定位和地图
10.1 基础知识
10.2 iPhone定位方法
10.3 MKReverseGeocoder?地理位置反向编码
10.4 LBS应用的类型
10.5 谷歌地图
10.5.1 在地图上增加大头针标注的方法
10.5.2 在地图上画线
第11章 网络编程
11.1 iOS网络编程
11.1.1 NSURLConnection
11.1.2 网络编程示例
11.2 ASIHTTPRequest
11.2.1 使用ASIHTTPRequest
11.2.2 ASIHTTPRequest使用示例
11.3 检查网络状态
11.3.1 SCNetworkReachability
11.3.2 Reachability
第12章 连接到互联网
12.1 使用UIWebView
12.2 解析XML
12.2.1 iOS下的XML解析库
12.2.2 NSXMLParser
12.2.3 第三方解析器
12.2.4 编写简单天气解析应用
12.3 解析JSON
12.3.1 iPhone的JSON
12.3.2 JSON解析库
第13章 多线程编程
13.1 UNIX多线程机制的使用
13.2 NSThread创建多线程的方法
13.2.1 线程的创建与启动
13.2.2 线程的同步与锁
13.2.3 线程的交互和其他控制方法
13.2.4 线程的睡眠
13.3 线程池NSOperationQueue
13.3.1 创建线程操作NSOperation
13.3.2 任务控制
13.4 生产者—消费者模型
13.4.1 使用@synchronized
13.4.2 使用NSLocking协议
第14章 2D和3D绘图编程
14.1 Quartz 2D
14.1.1 画布(Canvas)
14.1.2 绘图上下文(Graphics Context)
14.1.3 Quartz 2D数据类型
14.1.4 图形状态
14.1.5 Quartz 2D坐标系统
14.1.6 内存管理
14.1.7 绘制图形图像
14.1.8 绘制OpenFlow效果的倒影
14.2 3D绘图OpenGL ES
14.2.1 OpenGL与OpenGL ES简介
14.2.2 OpenGL ES在iPhone绘图中的应用
第15章 调试和优化
15.1 常见错误
15.1.1 版本错误
15.1.2 证书错误
15.1.3 编写错误
15.1.4 导入错误
15.2 调试跟踪
15.2.1 使用调试器
15.2.2 使用日志
15.3 使用Instruments
精彩书摘
业务模型还有一个很重要的模型,那就是数据模型。数据模型主要指实体对象的数据保存(持续化)。比如将一张订单保存到数据库,需要时从数据库获取订单。我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
(2)视图(View)层
视图即为用户交互界面。对于Web应用来说,可以是HTML界面,也有可能是XHTML、XML和Applet界面。随着应用复杂程度和规模的提升,界面的处理也变得越来越有挑战性。一个应用可能有很多不同的视图,MVC仅限于视图上数据的采集、处理以及用户的请求,而不包括视图上业务流程的处理。业务流程交由模型(Model)处理。比如一个订单的视图只接受来自模型的数据并进行显示,以及将用户界面的输入数据和请求传递给控制器和模型。
(3)控制器(Controller)层
控制器主要负责从用户接收请求,并将模型与视图整合在一起,共同完成相关任务。它像一个分发器,清楚地告诉开发者,可以选择什么样的模型和什么样的视图,完成什么样的用户请求。控制层本身不做任何的数据处理,例如用户点击一个链接,控制层接受请求后,并不处理业务信息,只是把用户的信息传递给模型,告诉模型做什么,然后选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一个视图也可能对应多个模型。
2)MVC的优点
MVC要求对应用分层,虽然会增加额外的工作,但产品的结构清晰,其应用通过模型可以得到更好的体现。具体表现如下:
①具有多个视图对应一个模型的能力。在目前用户需求快速变化的情况下,可能希望通过多种方式访问应用。例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,不管是哪种,对订单的处理都是一样的,也就是说订单的处理是一致的。按MVC设计模式,一个订单模型及多个视图即可解决问题。这样既减少了代码的重复,又减少了代码的维护量,一旦模型发生改变,也易于维护。
②由于模型返回的数据不带任何显示格式,为此这些模型也可直接应用于接口。
③由于一个应用被分离为三层,因此有时仅改变其中的一层就能满足应用的变化需求。当应用的业务流程或者业务规则改变时只需改动MVC的模型层,其他两层可保持不变。
④由于控制层是把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
⑤MVC模式有利于软件工程化管理。由于不同的层各司其职,每一层的不同应用间具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
3)MVC的不足
MVC的不足体现在以下几个方面:
①增加了系统结构和实现的复杂性。对于简单的界面,如果严格遵循MVC模式,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
②视图与控制器的联系仍过于紧密。视图与控制器是既相互分离又确实联系紧密的部件,没有控制器,视图的应用会很有限,反之亦然,这样就妨碍了它们的独立重用。
③视图对模型数据的访问效率比较低。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也降低了操作性能。
……
前言/序言
苹果iOS系统已经历5年多17个版本的更新,其在多代iPhone、iPad和iPod设备上取得巨大成功,目前已经成长为市场上影响力最大、功能最丰富、生态最完整的移动操作系统。
iOS的成功得益于苹果公司对移动互联网的深刻理解,苹果公司始终专注于用户体验与服务,并通过平台整合构建了完整的应用生态链。iOS从诞生之初即专注用户体验与服务的提升,通过不断的技术革新,一次次引领着UI交互方式的变革。比如,Siri技术就是 iOS5 最大的亮点,实现了语音控制输入功能,可以通过Siri使用语音提问和评论,并且可以与包括日历等在内的所有应用通信。同时,新“retina”显示屏像素要比历史版本的显示屏像素高出3倍左右,将用户体验提升到前所未有的高度,同时,也拉大了与竞争对手之间的距离!
APP Store是苹果公司构建应用生态链的关键形式,它让众多的开发者找到了自己的商业模式和商业机会,而苹果公司因此积累了庞大数量的应用。云服务iCloud让所有的iOS设备实现了互联互通,通过iCloud,使用同一账号的用户可以在不同iOS设备上同步信息和APP,实现文件备份、存储等功能。可以看出,以iCloud为“媒”,统一不同设备系统平台是苹果公司的既定战略,苹果公司在平台整合上已经迈出了坚实的一步。
在iOS过去 5 年多时间里,业界对苹果公司的疑问从“这是智能手机吗”发展到了“它可以代替PC”吗,可见其对智能手机发展的贡献,现在已经没有人怀疑以iOS引领的新一代智能手机将成为最重要的个人计算终端、个人娱乐终端和个人通信终端,其地位将与传统 PC分庭抗礼。苹果公司依靠其强大的垂直一体化战略,不仅通过iPhone、iPad等产品赚取了高额的利润,同时,通过吸引开发者不断地提供创新的应用,为苹果公司源源不断地注入活力。
此外,值得关注的是,苹果公司并不单纯是“以质取胜”,在数量上,苹果公司也有望在未来几年实现对Windows 设备(安装微软Windows操作系统的设备)的反超。相关统计数据显示:过去,Windows设备在同苹果设备的销量对比上,一直占据绝对优势,这一优势在2000年左右曾经达到过一个峰值,每销售50台Windows设备才售出一款苹果设备。但是,随着iPad和iPhone等一系列基于移动互联产品的问世,这一数字比例在急剧减小,截止目前,Windows设备与苹果设备的销量比例约为2∶1,分析师称,苹果设备数量有望在未来两年内超过微软。
当前,基于iOS的应用具有广阔的前景和良好的发展趋势。希望广大开发者借iOS之势,利用《iOS开发实战体验》及书中提供的相关代码,快速进入iOS开发领域,实现开发者梦想!
中国科学院博士、博士生导师,软件研究所研究员 金蓓弘
iOS开发实战体验 下载 mobi epub pdf txt 电子书 格式