《iOS开发指南》正式出版-源码-样章-目录,欢迎大家提出宝贵意见

时间:2023-01-02 18:56:50


目录大纲
基础篇

1 开篇综述

1.1iOS概述
1.1.1iOS是什么?
1.1.2iOS6新特性
1.2 开发环境及开发工具
1.3 本书中的约定
1.3.1 案例代码约定
1.3.2 图示的约定

2 第一个iOS应用程序

2.1 创建基于nib的HelloWorld工程
2.1.1 创建工程
2.1.2Xcode中的iOS工程模板
2.1.3 应用剖析
2.2 基于故事板的HelloWorld工程
2.2.1 使用故事板重构HelloWorld
2.2.2nib、xib与故事板
2.2.3 故事板中的Scene和Segue
2.3 应用生命周期
2.3.1 非运行状态——应用启动场景
2.3.2 点击Home键——应用退出场景
2.3.3 挂起重新运行场景
2.3.4 内存清除——应用终止场景
2.4 视图生命周期
2.4.1 视图生命周期与视图控制器关系
2.4.2 iOS6 UI状态保持和恢复
2.5 设置产品属性
2.5.1Xcode中Project和Target
2.5.2 设置常用的产品属性
2.6iOS API的介绍
2.6.1API概述
2.6.2 如何使用API帮助

3 iOS常用设计模式

3.1 单例模式
3.1.1 问题提出
3.1.2 实现原理
3.1.3 应用案例
3.2 委托模式
3.2.1 问题提出
3.2.2 实现原理
3.2.3 应用案例
3.3 观察者模式
3.3.1 问题提出
3.3.2 实现原理
3.3.3 通知机制
3.3.4KVO机制
3.4MVC模式
3.4.1MVC模式概述
3.4.2Cocoa Touch中的MVC模式

4 UIView与控件

4.1 视图“始祖”——UIView
4.1.1UIView“家族”
4.1.2 应用画面的构建层次
4.1.3 视图分类
4.2 标签控件和按钮控件
4.2.1 标签控件
4.2.2 按钮控件
4.2.3 动作和输出口
4.3TextField控件和TextView控件
4.3.1TextField控件
4.3.2TextView控件
4.3.3 键盘的打开和关闭
4.3.4 关闭和打开键盘的通知
4.3.5 键盘的种类
4.4 开关控件、滑块控件和分段控件
4.4.1 开关控件
4.4.2 滑块控件
4.4.3 分段控件
4.5 网页控件WebView
4.5.1WebView介绍
4.5.2 使用WebView构建Hybrid应用
4.5.3 本地代码调用JavaScript
4.5.4JavaScript调用本地代码
4.6 屏幕滚动控件ScrollView
4.6.1ScrollView属性的设置
4.6.2 键盘与其它控件的协同
4.7 等待相关的控件与进度条
4.7.1 等待控件ActivityIndicatorView
4.7.2 进度条ProgressView
4.7 警告和动作选单
4.7.1 警告框AlertView
4.7.2 动作选单ActionSheet
4.8 工具栏和导航栏
4.8.1 工具栏
4.8.2 导航栏
4.9 屏幕布局
4.9.1iPad与iPhone屏幕布局
4.9.2 绝对布局和相对布局
4.9.3 使用iOS6 AutoLayout布局
4.9.4 旋转你的屏幕
4.10 拨选器
4.10.1 日期拨选器
4.10.2 普通拨选器
4.10.3 数据源协议与委托协议
4.11iOS6中的Collection视图
4.11.1Collection视图介绍
4.11.2Collection视图单元格
4.11.3 数据源协议与委托协议

5 表视图

5.1 概述
5.1.1 表视图的组成
5.1.2 表视图相关类的构成
5.1.3 表视图分类
5.1.4 单元格组成和样式
5.1.5 数据源协议与委托协议
5.2 简单表视图
5.2.1 创建简单表视图
5.2.2 自定义单元格
5.2.3 添加搜索栏
5.3 分节表视图
5.3.1 添加索引
5.3.2 分组与静态表
5.4 修改单元格
5.4.1 删除和插入
5.4.2 移动
5.5 表视图UI设计模式
5.5.1 分页模式
5.5.2 下拉刷新模式
5.5.3iOS6下来刷新控件

6 视图控制器与导航模式

6.1 概述
6.1.1 视图控制器种类
6.1.2 导航模式
6.1.3 模态视图
6.2 平铺页面导航
6.2.1 应用场景
6.2.2 基于分屏控件的导航实现
6.2.3 基于Page的导航实现
6.3 标签导航
6.3.1 应用场景
6.3.2nib实现
6.3.3 故事板实现
6.4 树形结构导航
6.4.1 应用场景
6.4.2nib实现
6.4.3 故事板实现
6.5 组合使用导航模式
6.5.1 应用场景
6.5.2 故事板实现

7 iPhone与iPad应用开发的差异

7.1 概述
7.1.1 应用场景差异
7.1.2 设计和开发需注意的问题
7.1.3 构建自适应iPhone和iPad工程
7.2iPad专用API
7.2.1UIPopoverController控制器
7.2.2UISplitViewController控制器
7.2.3 模态视图专用属性
7.3Master-Detail应用程序模板
7.3.1nib实现模板
7.3.2 故事板实现模板
7.4Utility应用程序模板
7.4.1nib实现模板
7.4.2 故事板实现模板
7.5 移动平台的分层架构设计
7.5.1 低耦合企业级系统架构设计
7.5.2 移动平台的分层架构设计
7.5.3 基于同一工程的分层
7.5.4 基于一个工作空间不同工程的分层

8 应用程序的设置

8.1 概述
8.1.1 设置
8.1.2 配置
8.2 应用程序设置包
8.3 设置项目种类
8.3.1 文本字段
8.3.2 开关
8.3.3 滑块
8.3.4 值列表
8.3.5 子画面
8.4 读取设置

9 应用程序本地化

9.1 概述
9.1.1 本地化内容
9.1.2 本地化目录结构
9.2 文本信息本地化
9.2.1 系统按钮和信息本地化
9.2.2 应用名称本地化
9.2.3 程序代码输出的静态文本本地化
9.2.4 使用genstring工具
9.3nib和故事板文件本地化
9.3.1 添加本地化
9.3.2 开关使用ibtool工具
9.4 资源文件本地化

10 数据持久化

10.1 概述
10.1.1 沙箱目录
10.1.2 持久化方式
10.2 属性列表
10.3 对象归档
10.4 使用SQLite数据库
10.4.1SQLite数据类型
10.4.2 创建数据库
10.4.3 查询数据
10.4.4 修改数据
10.5Core Data
10.5.1ORM(对象关系映射)
10.5.2CoreData堆栈
10.5.3 建模和生成实体
10.5.4 采用Core Data分层架构设计
10.5.5 查询数据
10.5.6 修改数据

11 访问通讯录

11.1 概述
11.2 读取联系人信息
11.2.1 查询联系人记录
11.2.2 读取单值属性
11.2.3 读取多值属性
11.2.4 读取图片属性
11.3 写入联系人信息
11.3.1 创建联系人
11.3.2 修改联系人
11.3.3 删除联系人
11.4AddressBook高级API
11.4.1 选择联系人
11.4.2 显示和修改联系人
11.4.3 创建联系人

网络篇

12 访问Web Service

12.1 概述
12.2 数据交换格式
12.2.1XML文档结构
12.2.2 解析XML文档
12.2.3JSON文档结构
12.2.4JSON数据解码
12.3REST Web Service
12.3.1HTTP和HTTPS协议
12.3.2 同步GET方法请求编程
12.3.3 异步GET方法请求编程
12.3.4POST方法请求编程
12.3.5 调用REST Web Service的插入、修改和删除方法
12.4  ASIHTTPRequest框架使用
12.4.1 安装和配置ASIHTTPRequest框架
12.4.2 同步请求
12.4.3 异步请求
12.4.4 使用请求队列
12.4.5 上传数据
12.5 反馈网络信息改善用户体验
12.5.1iOS6表视图刷新控件的使用
12.5.2 使用等待指示器控件
12.5.3 使用网络等待指示器

13 定位服务与地图应用开发

13.1 定位服务
13.1.1 定位服务编程
13.1.2 地理信息反编码
13.1.3 地理信息编码查询
13.1.4 关于定位服务的测试
13.2 使用iOS6苹果地图
13.2.1 显示地图
13.2.2 添加标注
13.2.3 跟踪用户位置变化
13.3 使用程序外地图
13.3.1 调用iOS6苹果地图
13.3.2 调用谷歌Web地图

进阶篇

14 iOS中的商业模式

14.1 收费策略
14.1.1iOS如何赚钱
14.1.2 避免定价策略误区
14.1.3 免费软件的艺术
14.1.4 适当的时间适当的地点植入你的广告
14.1.5 尝试不同的盈利模式
14.2 使用苹果iAd广告
14.2.1 横幅广告
14.2.2 插页广告
14.2.3 查看你的收入
14.3 使用谷歌AdMob广告
14.3.1 注册AdMob帐号和管理应用
14.3.2 下载谷歌AdMob Ads SDK和示例代码
14.3.3 添加AdMob横幅广告
14.3.4 添加AdMob插页广告
14.3.5 为广告提交用户和位置信息
14.3.6 搜索广告
14.3.7 查看你的收入
14.4 应用内购买
14.4.1 概述
14.4.2 测试环境搭建
14.4.3 在程序中添加实现应用内购买
14.4.4 测试应用内购买

15 找出你程序中的BUG-调试

15.1Xcode调试工具
15.1.1 定位编译错误
15.1.2 查看和显示日志
15.1.3 设置和查看断点
15.1.4 调试工具栏
15.1.5 输出窗口
15.1.6 变量查看窗口
15.1.7 查看线程
15.2 日志与断言输出
15.2.1 使用NSLog函数
15.2.2 使用NSAssert宏
15.2.3 移除NSLog和NSAssert
15.3LLDB调试工具
15.3.1 断点命令
15.3.2 观察点命令
15.3.3 查看变量和计算表达式命令
15.4 异常堆栈报告分析
15.4.1 跟踪异常堆栈
15.4.2 分析堆栈报告
15.5iOS设备上调试
15.5.1 创建开发者证书
15.5.2 设备注册
15.5.3 创建App ID
15.5.4 创建配置概要文件
15.5.5 设备调试
15.6Xcode设备管理工具
15.6.1 管理设备配置概要文件
15.6.2 查看设备上应用程序
15.6.3 设备控制台
15.6.4 设备日志

16 基于测试驱动的iOS开发

16.1 测试驱动的软件开发概述
16.1.1 测试驱动的软件开发流程
16.1.2 测试驱动的软件开发案例
16.2 使用OCUnit测试框架
16.2.1iOS单元测试框架
16.2.2 添加OCUnit到工程
16.2.3 应用测试和逻辑测试
16.2.4 编写OCUnit测试方法
16.2.5 分析测试报告
16.3 使用GHUnit测试框架
16.3.1 添加GHUnit到工程
16.3.2 编写GHUnit测试用例
16.3.3 分析测试报告
16.4 使用伪对象
16.4.1 添加OCMock到工程
16.4.2 使用OCMock
16.5iOS单元测试最佳实践
16.5.1iOS单元测试策略
16.5.2 测试数据持久层
16.5.3 测试业务逻辑层
16.5.4 测试表示层

17 让你的程序“飞”起来——性能优化

17.1 内存优化
17.1.1 内存泄漏问题的解决
17.1.2 查找和解决僵尸对象
17.1.3autorelease的使用问题
17.1.4 响应内存警告
17.1.5 选择nib还是故事板?
17.2 优化资源文件
17.2.1 图片文件优化
17.2.2 音频文件优化
17.3 延迟加载
17.3.1 资源文件的延迟加载
17.3.2 故事板和nib文件的延迟加载
17.4 数据持久化的优化
17.4.1 使用文件
17.4.2 使用SQLite数据库
17.4.3 使用CoreData
17.5 可重用对象的使用
17.5.1 表视图中的重用对象
17.5.2Collection视图中的重用对象
17.5.3 地图视图中的重用对象
17.6 并发处理与多核CPU
17.6.1 主线程阻塞问题
17.6.2 选择NSThread还是GCD?
17.7 编译器和编译参数
17.7.1GCC、LLVM GCC与Apple LLVM比较
17.7.2ARM架构
17.7.3Optimization Level

18 管理好你的程序代码——代码版本控制

18.1 概述
18.1.1 版本控制历史
18.1.2 基本概念
18.2Git代码版本控制
18.2.1 服务器搭建
18.2.2Gitolite服务器管理
18.2.3Git常用命令
18.2.3Git分支
18.2.4Git协同开发
18.2.5Xcode中Git的配置与使用
18.3GitHub代码托管服务
18.3.1 创建和配置GitHub账号
18.3.2 创建代码库
18.3.3 派生(fork)代码库
18.3.4 使用GitHub协同开发
18.3.5 管理组织

19 把你的应用放到App Store

19.1 收官
19.1.1 添加图标
19.1.2 添加启动画面
19.1.3 调整应用Target属性
19.1.4 为发布编译
19.1.5 应用打包
19.2 发布流程
19.2.1创建应用及基本信息
19.2.2应用定价信息
19.2.3最后信息输入
19.2.4上传应用
19.3常见审核不通过的原因
19.3.1 功能问题
19.3.2 用户界面问题
19.3.3 商业问题
19.3.4 不当内容
19.3.5 其它问题

实战篇

20 重构MyNotes应用——iOS网络通信中的设计模式与架构设计

20.1 移动网络通讯应用的分层架构设计
20.2 基于委托模式实现
20.2.1 网络通讯与委托模式
20.2.2 异步网络通讯中委托模式实现分层架构设计
20.2.3 类图
20.2.4 时序图
20.2.5 数据持久层代码实现
20.2.6 业务逻辑层代码实现
20.2.7 表示层代码实现
20.3 基于观察者模式通知机制实现
20.3.1 观察者模式的通知机制回顾
20.3.2 异步网络通讯中通知机制实现分层架构设计
20.3.3 类图
20.3.4 时序图
20.3.5 数据持久层代码实现
20.3.6 业务逻辑层代码实现
20.3.7 表示层代码实现

21 iOS敏捷开发项目实战——2016里约热内卢奥运会应用开发及App Store发布

21.1 应用分析与设计
21.1.1 应用概述
21.1.2 需求分析
21.1.3 原型设计
21.1.4 数据库设计
21.1.5 架构设计
21.2iOS敏捷开发
21.2.1 敏捷开发宣言
21.2.2iOS可以敏捷开发?
21.2.3iOS敏捷开发最佳实践
21.3 任务1:创建应用基本工作空间
21.3.1 迭代1.1 创建数据持久层工程
21.3.2 迭代1.2 创建业务逻辑层工程
21.3.3 迭代1.3 创建表示层工程
21.3.4 迭代1.4 提交代码到GitHub
21.4 任务2:信息系统层与持久层开发
21.4.1 迭代2.1 编写数据库DDL脚本
21.4.2 迭代2.2 插入初始数据到数据库
21.4.3 迭代2.3 编写实体类
21.4.4 迭代2.4 DAO类GHUnit单元测试
21.4.5 迭代2.5 编写DAO类
21.4.6 迭代2.6 提交代码到GitHub
21.5 任务3:业务逻辑层开发
21.5.1 迭代3.1 比赛项目业务逻辑类GHUnit单元测试
21.5.2 迭代3.2 编写比赛项目业务逻辑类
21.5.3 迭代3.3 比赛日程业务逻辑类GHUnit单元测试
21.5.4 迭代3.4 编写比赛日程业务逻辑类
21.5.5 迭代3.5 提交代码到GitHub
21.6 任务4:表示层开发
21.6.1 迭代4.1 根据原型设计初步设计iPad故事板
21.6.2 迭代4.2 根据原型设计初步设计iPhone故事板
21.6.3 迭代4.3 首页模块
21.6.4 迭代4.4 比赛项目模块
21.6.5 迭代4.5 比赛日程模块
21.6.6 迭代4.6 倒计时模块表示层
21.6.7 迭代4.7 关于我们模块表示层
21.6.8 迭代4.8 提交代码到GitHub
21.7 任务5:收工
21.7.1 迭代5.1 添加图标
21.7.2 迭代5.2 设计和添加启动画面
21.7.3 迭代5.3 植入谷歌AdMob横幅广告
21.7.4 迭代5.4 设备上测试
21.7.5 迭代5.5 提交代码到GitHub
21.7.6 迭代5.6 App Store应用发布