编辑推荐
世界知名iOS开发专家Erica Sadun的全新打造;
OS开发领域扛鼎之作,全面涵盖iOS开发细节;
特色:
通过多点触控和手势(包括自定义的手势识别器)来支持用户直接输入;
构建、自定义和使用iOS 6控件;
通过弹出式对话框、进度条、本地通知、弹出信息、音频铃声和其他技术来提醒用户;
组装视图和动画,组织视图层次,理解视图如何协同工作;
使用iOS 6突破性的自动布局约束系统来简化对多个屏幕尺寸的支持;
控制键盘,是屏幕上的元素识别文本,以及有效地扫描和格式化文本;
使用视图控制器来组织用户的工作区;
管理照片、视频、电子邮件、文本消息,以及iOS 6增强的社交媒体更新;
实现VoiceOver的可访问性,把受众扩展到更多的用户;
使用表格来简单直观地管理app,以及使用全新的iOS 6集合视图来添加灵活性;
使用Core Data托管数据存储;
使用iOS 6强大的联网能力以及支持的Web服务。
内容简介
《iOS 6核心开发手册(第4版)》是市面上最畅销的iOS开发图书的全新升级版本,以苹果最新发布的iOS 6为基础编写而成。
《iOS 6核心开发手册(第4版)》通过源自真实世界的案例和代码解决方案讲解了iPhone和iPad应用开发过程中用到的所有知识,其内容涵盖了iPhone、iPad应用开发的核心技术要点,以及iOS开发在真实商业开发中所需要的所有主题。
《iOS 6核心开发手册(第4版)》适合对iOS开发感兴趣的人员阅读。
作者简介
Erica Sadun,数十本畅销书的作者、合著者和供稿者,这些书涉及程序设计、数字视频、数字摄影、Web设计和其他技术主题。作为一名在iOS领域最负盛名的开发人员,她还开发了数十种iPhone自带的应用。Sadun持有佐治亚理工学院计算机科学专业的博士学位。
目录
第1章 姿势和触摸
1.1 触摸
1.1.1 阶段
1.1.2 触摸和响应者方法
1.1.3 触摸视图
1.1.4 多触摸
1.1.5 姿势识别器
1.2 秘诀:添加简单的直接操作界面
1.3 秘诀:添加平移姿势识别器
1.4 秘诀:同时使用多个姿势识别器
1.5 秘诀:约束移动
1.6 秘诀:测试触摸
1.7 秘诀:针对位图进行测试
1.8 秘诀:在屏幕上绘制触摸
1.9 秘诀:平滑绘图
1.10 秘诀:使用多触摸交互
1.11 秘诀:检测圆形
1.12 创建自定义的姿势识别器
1.13 秘诀:从滚动视图中拖动
1.14 秘诀:实时触摸反馈
1.14.1 启用触摸反馈
1.14.2 截取和转发触摸事件
1.14.3 实现TOUCHkit叠加视图
1.15 秘诀:给视图添加菜单
1.16 小结
第2章 构建和使用控件
2.1 UIControl类
2.1.1 目标-动作
2.1.2 控件的种类
2.1.3 控件事件
2.2 按钮
2.3 Interface Builder中的按钮
2.4 秘诀:构建按钮
2.4.1 多行按钮文本
2.4.2 给按钮添加动画式元素
2.4.3 给按钮添加额外的状态
2.5 秘诀:制作按钮响应的动画
2.6 秘诀:添加具有自定义指针的滑块
2.6.1 自定义UISlider
2.6.2 提高效率
2.7 外观代理
2.8 秘诀:创建可点按两次的分段控件
2.8.1 第二次点按反馈
2.8.2 控件和属性
2.9 处理选项开关和步进器
2.10 子类化UIControl
2.10.1 创建控件
2.10.2 跟踪触摸
2.10.3 调度事件
2.11 秘诀:构建星星滑块
2.12 构建触摸式转盘
2.13 秘诀:创建拉式控件
2.13.1 可发现性
2.13.2 测试触摸
2.14 构建自定义的锁定控件
2.15 添加页面指示控件
2.16 秘诀:创建可自定义的分页滚动条
2.17 构建工具栏
2.18 小结
第3章 提醒用户
3.1 通过警报直接与用户交流
3.1.1 构建简单的警报
3.1.2 警报委托
3.1.3 显示警报
3.1.4 警报的种类
3.2 “请等待”:给用户显示进度
3.2.1 使用UIActivityIndicatorView
3.2.2 使用UIProgressView
3.3 秘诀:不带按钮的警报
3.4 秘诀:利用事件处理循环创建模态警报
3.5 秘诀:结合使用可变参数与警报视图
3.6 展示选项列表
3.6.1 滚动菜单
3.6.2 在动作表中显示文本
3.7 秘诀:构建自定义的叠加
3.8 秘诀:基本的弹出窗口
3.9 秘诀:本地通知
3.10 警报指示器
3.11 秘诀:简单的音频警报
3.11.1 系统声音
3.11.2 振动
3.11.3 警报
3.11.4 延迟
3.11.5 系统声音的处理
3.12 小结
第4章 组合视图与动画
4.1 视图层次结构
4.2 秘诀:恢复视图层次结构树
4.3 秘诀:查询子视图
4.4 管理子视图
4.4.1 添加子视图
4.4.2 重新排序和删除子视图
4.4.3 视图回调
4.5 标记和检索视图
4.6 秘诀:通过对象关联命名视图
4.7 视图几何学
4.7.1 框架
4.7.2 矩形实用函数
4.7.3 点和大小
4.7.4 变换
4.7.5 坐标系统
4.8 秘诀:处理视图框架
4.8.1 调整大小
4.8.2 CGRect和Center
4.8.3 其他几何元素
4.9 秘诀:获取变换信息
4.9.1 获取变换属性
4.9.2 测试视图交叉
4.10 显示和交互特征
4.11 UIView动画
4.12 秘诀:淡入和淡出视图
4.13 交换视图
4.14 秘诀:翻转视图
4.15 秘诀:使用Core Animation渐变
4.16 秘诀:在视图出现时弹起它们
4.17 图像视图动画
4.18 小结
第5章 视图约束
5.1 约束是什么
5.2 对齐矩形
5.3 约束属性
5.4 约束的法则
5.5 创建约束
5.5.1 基本的约束声明
5.5.2 可视化的格式约束
5.5.3 变量绑定
5.6 格式字符串
5.6.1 方向
5.6.2 视图名称
5.6.3 连接
5.7 谓词
5.7.1 指标
5.7.2 视图之间的谓词
5.7.3 优先级
5.8 格式字符串小结
5.9 存储和更新约束
5.10 秘诀:比较约束
5.11 秘诀:描述约束
5.12 秘诀:创建固定大小的受约束的视图
5.12.1 禁用自动调整大小约束
5.12.2 在视图界限内开始
5.12.3 约束大小
5.13 秘诀:居中显示视图
5.14 秘诀:设置高宽比
5.15 对齐视图和灵活地调整大小
5.16 秘诀:响应方向变化
5.17 约束宏
5.17.1 一致的约束
5.17.2 充分的约束
5.17.3 宏
5.18 调试约束
5.19 小结
第6章 文本输入
6.1 秘诀:取消UITextField键盘
6.1.1 阻止键盘取消
6.1.2 文本特征属性
6.1.3 其他文本框属性
6.2 秘诀:利用自定义的附件视图代替文本视图
6.3 秘诀:调整键盘周围的视图
6.4 秘诀:调整附件视图周围的视图
6.5 秘诀:创建自定义的输入视图
6.6 秘诀:创建能够意识到文本输入的视图
6.7 秘诀:向非文本视图中添加自定义的输入视图
6.8 秘诀:构建更好的文本编辑器(第1部分)
6.9 秘诀:构建更好的文本编辑器(第2部分)
6.9.1 启用属性化的文本
6.9.2 控制属性
6.9.3 其他的响应者功能
6.10 秘诀:文本输入过滤
6.11 秘诀:检测文本模式
6.11.1 创建你自己的表达式
6.11.2 枚举正则表达式
6.11.3 数据检测器
6.11.4 使用内置的类型检测器
6.11.5 有用的网站
6.12 检测UITextView中的拼写错误
6.13 搜索文本字符串
6.14 小结
第7章 视图控制器的使用
7.1 视图控制器
7.1.1 UIViewController类
7.1.2 导航控制器
7.1.3 选项卡栏控制器
7.1.4 拆分视图控制器
7.1.6 页面视图控制器
7.1.7 弹出式控制器
7.2 使用导航控制器和拆分视图的开发
7.2.1 使用导航控制器和堆栈
7.2.2 压入和弹出视图控制器
7.2.3 栏按钮
7.3 秘诀:导航项类
7.3.1 标题和返回按钮
7.3.2 宏
7.4 秘诀:模态展示
7.5 秘诀:构建拆分视图控制器
7.6 创建通用拆分视图/导航应用
7.7 秘诀:选项卡栏
7.8 记忆选项卡状态
7.9 秘诀:页面视图控制器
7.9.1 书籍属性
7.9.2 包装实现
7.9.3 探索秘诀
7.9.4 构建展示索引
7.10 秘诀:在页面视图控制器中刮擦页面
7.11 秘诀:自定义容器
7.11.1 添加与移除子视图控制器
7.11.2 在视图控制器之间过渡
7.12 秘诀:延续
7.13 小结
第8章 常用控制器
8.1 图片选取器控制器
8.1.1 图片源
8.1.2 在iPhone和iPad上展示选取器
8.2 秘诀:选择图片
8.2.1 怎么做:给模拟器添加照片
8.2.2 Assets Library(资产库)框架
8.2.3 展示一个选取器
8.2.4 处理委托回调
8.3 秘诀:拍摄照片
8.3.1 设置选取器
8.3.2 显示图片
8.3.3 将图片保存到相簿
8.4 秘诀:录制视频
8.4.1 创建视频录制选取器
8.4.2 保存视频
8.5 秘诀:使用媒体播放器播放视频
8.6 秘诀:编辑视频
8.7 秘诀:选取并编辑视频
8.8 秘诀:通过邮件发送图片
8.9 发送文本信息
8.10 秘诀:贴出社交更新
8.11 秘诀:活动视图(Activity View)控制器
8.11.1 创建并展示控制器
8.11.2 添加服务
8.11.3 项目和服务
8.12 秘诀:Quick Look预览控制器
8.13 小结
第9章 可访问性
9.1 可访问性简介
9.2 启用可访问性
9.3 特征(Trait)
9.4 标签
9.5 提示
9.6 使用模拟器测试
9.7 广播更新
9.8 在iPhone上测试可访问性
9.9 小结
第10章 创建与管理表格视图
10.1 iOS表格
10.2 委托
10.3 创建表
10.3.1 表格风格
10.3.2 视图布局
10.3.3 指派数据源
10.3.4 给单元格提供服务
10.3.5 注册单元格类
10.3.6 单元格出列
10.3.7 指派委托
10.4 秘诀:实现一个基本的表格
10.4.1 数据源方法
10.4.2 响应用户碰触
10.5 表格视图单元格
10.5.1 选中的颜色
10.5.2 添加自定义选择特征
10.6 秘诀:创建复选表格单元格
10.7 使用展开附件
10.8 秘诀:表格编辑
10.8.1 添加撤销支持
10.8.2 支持撤销
10.8.3 显示移除控件
10.8.4 处理删除请求
10.8.5 轻扫单元格
10.8.6 重新排列单元格
10.8.7 添加单元格
10.9 秘诀:使用节
10.9.1 构建节
10.9.2 节数和行数
10.9.3 返回单元格
10.9.4 创建头部标题
10.9.5 自定义头部和脚注
10.9.6 创建节索引
10.9.7 处理节不匹配
10.9.8 带有节的委托
10.10 秘诀:搜索表格
10.10.1 创建搜索显示控制器
10.10.2 为搜索显示控制器注册单元格
10.10.3 构建可搜索的数据源方法
10.10.4 委托方法
10.10.5 使用搜索感知的索引
10.11 秘诀:给表格添加下拉刷新功能
10.12 添加动作行
10.13 编写自定义组表格的代码
10.14 秘诀:构建多滚轮表格
10.14.1 创建UIPickerView
10.14.2 数据源和委托方法
10.14.3 结合选取器使用视图
10.15 使用UIDatePicker
10.16 小结
第11章 集合视图
11.1 集合视图与表格的对比
11.2 建立集合视图
11.2.1 控制器
11.2.2 视图
11.2.3 数据源和委托
11.3 流布局
11.3.1 滚动方向
11.3.2 项目尺寸和线间距
11.3.3 头部和脚注的尺寸
11.3.4 嵌空
11.4 秘诀:基本的集合视图流
11.5 秘诀:自定义单元格
11.6 秘诀:滚动水平列表
11.7 秘诀:引入交互式布局效果
11.8 秘诀:滚动对齐
11.9 秘诀:创建圆形布局
11.9.1 创建与删除的动画
11.9.2 给圆形布局提供能量
11.9.3 布局
11.10 秘诀:给布局添加手势
11.11 秘诀:创建真正的网格布局
11.12 秘诀:自定义项目菜单
11.13 小结
第12章 初尝Core Data
12.1 Core Data导引
12.2 实体和模型
12.2.1 构建一个模型文件
12.2.2 属性和关系
12.2.3 构建对象类
12.3 创建上下文
12.4 添加数据
12.4.1 检查数据文件
12.4.2 查询数据库
12.4.3 设置提取请求
12.4.4 执行提取
12.5 移除对象
12.6 秘诀:使用Core Data作为表格数据源
12.6.1 索引路径访问
12.6.2 节键路径
12.6.3 节组
12.6.4 索引标题
12.6.5 表格的备妥程度
12.7 秘诀:搜索表格和Core Data
12.8 给Core Data表格视图添加编辑功能
12.8.1 添加撤消/重做支持
12.8.2 创建撤销事务
12.8.3 重新思考编辑
12.9 秘诀:由Core Data提供能量的集合视图
12.10 小结
第13章 网络基础
13.1 秘诀:检查网络状态
13.2 扫描连接性更改
13.3 秘诀:同步下载
13.4 秘诀:异步下载
13.5 一次调用无反馈异步下载
13.6 秘诀:使用JSON序列化
13.7 秘诀:将XML转换成树
13.7.1 树
13.7.2 构建分析树
13.8 小结
附录A Objective-C文字常量
A.1 数字
A.2 装箱
A.3 枚举
A.4 容器文字常量
A.5 下标
A.6 功能测试
前言/序言
揭秘 iOS 6 移动应用开发:架构、设计与实践 本书旨在为渴望深入理解 iOS 6 平台下移动应用开发的读者提供一份详尽的技术指南。我们不局限于表面API的罗列,而是着眼于构建坚实、可维护且高性能的应用所必需的核心概念、架构模式和高级技术。通过对 iOS 6 核心框架的深度剖析,以及贯穿其中的实践性示例,本书将帮助您从容应对复杂的开发挑战,打造出色的用户体验。 第一部分:iOS 6 核心架构与基础 第一章:iOS 6 操作系统概览与开发环境搭建 本章将为您勾勒出 iOS 6 操作系统的宏观图景,介绍其关键组件、生命周期以及与硬件的交互方式。我们将详细指导您如何配置一个高效的 Xcode 开发环境,包括 Xcode 的安装、模拟器的使用,以及与 iOS 设备连接的设置。了解开发工具链是高效开发的第一步,我们将从基础入手,确保您能够顺利地启动项目并进行调试。 第二章:Objective-C 语言精髓与 ARC 内存管理 Objective-C 作为 iOS 开发的基石,其独特的面向对象特性和消息传递机制是理解 iOS 框架的关键。本章将深入探讨 Objective-C 的核心概念,包括类、对象、协议、类别、继承以及消息转发。我们将重点关注自动引用计数(ARC)这一重要的内存管理机制,详细解释其工作原理,讲解如何通过 ARC 有效避免内存泄漏和野指针问题,从而编写更稳定、更健壮的代码。 第三章:Cocoa Touch 框架导览与核心类 Cocoa Touch 是 iOS 应用开发的强大框架。本章将为您全面介绍 Cocoa Touch 的主要组成部分,包括 UIKit、Foundation、Core Graphics、Core Animation 等。我们将重点剖析 UIKit 中的核心类,如 UIApplication、UIWindow、UIViewController、UIView,以及它们在应用生命周期管理、视图层级构建和用户交互处理中的作用。理解这些核心类的职责和交互方式,是构建任何 iOS 应用的基础。 第四章:视图控制器(UIViewController)生命周期与管理 视图控制器是 iOS 应用中管理视图层次结构和用户交互的核心单元。本章将深入解析 UIViewController 的完整生命周期,从初始化、加载、显示到消失、销毁的每一个阶段。我们将详细讲解 `viewDidLoad`、`viewWillAppear`、`viewDidAppear`、`viewWillDisappear`、`viewDidDisappear` 等关键生命周期方法的作用,以及如何在不同生命周期阶段执行适当的逻辑,如数据加载、资源释放、动画设置等。此外,我们还将探讨视图控制器之间的导航模式,包括 Navigation Controller 和 Tab Bar Controller 的使用。 第五章:视图(UIView)与视图层级结构 视图是构成用户界面的基本元素。本章将聚焦于 UIView 类及其子类,讲解如何创建、配置和布局视图。我们将深入理解视图的坐标系、边界(bounds)和位置(frame)概念,以及如何在视图层级结构中添加、移除和管理子视图。重点关注 Auto Layout 这一强大的约束布局系统,学习如何使用它来创建适应不同屏幕尺寸和方向的灵活界面。同时,还将介绍一些常用的 UIKit 视图组件,如 UILabel、UIButton、UIImageView、UITextField 等。 第二部分:iOS 6 应用设计与高级技术 第六章:事件处理与用户交互 响应用户的输入是任何交互式应用的核心。本章将深入讲解 iOS 的事件处理机制,包括事件的产生、传递和响应。我们将详细介绍触摸事件(包括单点触摸、多点触摸和拖动手势)、动作消息(actions)、目标-动作(target-action)模式,以及如何使用手势识别器(Gesture Recognizers)来处理更复杂的交互。理解事件传递链(responder chain)对于正确处理用户输入至关重要。 第七章:数据持久化策略与选择 在移动应用开发中,数据的持久化是必不可少的。本章将详细介绍 iOS 平台提供的多种数据持久化方案,包括: UserDefaults: 适用于存储少量用户偏好设置。 文件系统: 讲解如何使用 NSFileManager 进行文件读写,适用于存储非结构化数据。 Core Data: 这是一个强大的对象图管理和持久化框架,适用于管理大量结构化数据,我们将深入探讨其模型创建、获取、更新和删除数据的操作。 Realm: 作为一种轻量级的移动数据库,Realm 提供了高性能和易用性,本章将介绍其在 iOS 6 中的集成和基本使用。 SQLite: 直接使用 SQLite 数据库,提供更底层的控制和更高的性能。 我们将对比各种方案的优缺点,并指导您根据应用的需求选择最合适的持久化策略。 第八章:网络通信与数据获取 现代移动应用离不开与远程服务器进行数据交互。本章将深入讲解 iOS 的网络通信技术。我们将详细介绍 `NSURLConnection` 和 `NSURLSession` 这两种主要的数据传输方式,重点关注 `NSURLSession` 的强大功能,包括请求创建、响应处理、错误处理、上传和下载等。我们将讲解如何使用 JSONDecoder 进行 JSON 数据的解析,以及如何处理网络错误和设置超时。此外,还会涉及 RESTful API 的基本概念和实践。 第九章:多线程编程与 Grand Central Dispatch (GCD) 为了保证用户界面的流畅响应,避免阻塞主线程,多线程编程是必不可少的。本章将深入讲解 iOS 的多线程模型。我们将详细介绍 Grand Central Dispatch (GCD) 的概念、优势和使用方法。我们将讲解队列(Dispatch Queues)的类型(主队列、全局队列、并发队列、串行队列),以及如何使用 `dispatch_async`、`dispatch_sync`、`dispatch_once` 等函数来执行异步和同步任务。此外,还会探讨线程安全和锁的使用,以避免数据竞争。 第十章:Core Animation 与动画效果实现 动画是提升用户体验、增强应用表现力的重要手段。本章将深入讲解 Core Animation 框架,学习如何创建平滑、富有吸引力的动画效果。我们将详细介绍 CALayer 的概念,以及如何通过 CABasicAnimation、CAKeyframeAnimation、CAAnimationGroup 等动画类来控制视图的各种属性变化,如位置、大小、透明度、旋转等。我们将演示如何创建过渡动画、属性动画,以及如何同步和组合多个动画。 第十一章:多媒体处理:音频与视频 本章将指导您如何集成和处理音频与视频内容。我们将介绍 AVFoundation 框架,讲解如何播放音频文件、录制音频、播放视频、拍摄视频等。我们将演示如何使用 AVPlayer 进行音视频播放控制,如何设置播放列表,以及如何处理播放状态的改变。 第十二章:地理位置服务与地图集成 利用用户的地理位置信息可以为应用增加更多智能化的功能。本章将详细讲解 Core Location 框架,学习如何获取用户的当前位置、监听位置变化、进行地理编码和反地理编码。我们还将介绍 MapKit 框架,学习如何在应用中集成地图视图,显示标记点、绘制路线,以及与地图进行交互。 第十三章:推送通知(Push Notification)服务 推送通知是与用户保持联系、及时传递信息的重要方式。本章将详细讲解 Apple 的推送通知服务(APNS)。我们将介绍推送通知的工作原理,包括客户端(App)和服务器端的配置与交互。我们将演示如何在 Xcode 中配置推送证书、Provisioning Profile,以及如何在服务器端生成和发送推送消息。 第三部分:应用发布与优化 第十四章:内存管理与性能优化 高效的应用不仅要功能完善,更要性能卓越。本章将深入探讨 iOS 应用的内存管理和性能优化策略。我们将回顾 ARC 的高级用法,并讲解如何使用 Instruments 工具来检测内存泄漏、查找性能瓶颈,如CPU使用率过高、UI卡顿等。我们将分享提高应用响应速度、降低内存占用的实用技巧,以及如何优化视图加载、数据处理和网络请求。 第十五章:应用测试与调试技巧 编写高质量的代码离不开充分的测试。本章将介绍 iOS 应用的测试方法,包括单元测试(Unit Testing)和 UI 测试。我们将讲解如何使用 XCTest 框架编写和运行测试用例。此外,我们将分享 Xcode 中强大的调试工具,包括断点设置、变量监视、日志输出、视图调试器等,帮助您快速定位和解决代码中的错误。 第十六章:应用打包、签名与发布流程 将开发完成的应用推向 App Store 是开发过程的最后一步。本章将详细讲解应用打包、签名和发布到 App Store 的完整流程。我们将介绍 Provisioning Profile、证书、App ID 的概念和管理。我们将指导您如何配置应用图标、启动画面,以及如何填写 App Store Connect 中的元数据信息。最后,我们将演示如何使用 Xcode 将应用存档(Archive)并上传到 App Store Connect,完成应用的发布。 通过对以上各章内容的深入学习和实践,相信您将能够构建出功能强大、性能优越、用户体验卓越的 iOS 6 移动应用程序。本书不仅是您学习 iOS 6 开发的工具书,更是您踏上移动开发征程的坚实伙伴。