内容简介
第一部分 起步
第1章 获取Xcode
1.1 开始之前
1.2 安装Xcode
1.3 移除Xcode
1.4 Apple开发者计划
1.5 下载Xcode
1.6 额外需要下载的内容
1.7 小结
第2章 初识Xcode
2.1 启动Xcode
2.2 Hello World
2.2.1 新建项目
2.2.2 让Xcode安静下来
2.2.3 构建和运行
2.2.4 货真价实的程序
2.3 删除项目
2.4 小结
第3章 简单的工作流程和被动调试
3.1 创建项目
3.2 构建
3.3 运行
3.4 简单调试
3.5 小结
第4章 主动调试
4.1 一个简单的测试用例
4.2 开始主动调试
4.2.1 设置断点
4.2.2 变量窗格
4.2.3 单步调试
4.3 解决这个问题
4.3.1 行为
4.3.2 解决方法
4.4 小结
第5章 编译
5.1 编译
5.2 动态载入
5.3 Xcode和Clang
5.3.1 本地分析
5.3.2 跨函数分析
5.3.3 索引
5.4 Swift
5.5 编译产品
5.5.1 中间产品
5.5.2 预编译
5.6 小结
第6章 添加库target
6.1 添加target
6.2 target关系
6.2.1 添加文件到target中
6.2.2 target中的头文件
6.3 从属target
6.3.1 添加库
6.3.2 调试依赖target
6.4 小结
第7章 版本控制
7.1 采取控制
7.2 文件状态
7.3 首次提交
7.4 使用远程版本库
7.4.1 本地建立一个“远程”版本库
7.4.2 将文件推送到远程服务器
7.5 合并与冲突
7.5.1 User A
7.5.2 User B
7.5.3 返回User A
7.6 版本编辑器
7.6.1 Comparison
7.6.2 Blame
7.6.3 Log
7.7 分支
7.8 小结
第二部分 iOS应用程序的生命周期
第8章 开始制作iOS应用程序
8.1 规划应用程序
8.1.1 模型-视图-控制器
8.1.2 模型
8.1.3 视图
8.1.4 控制器
8.2 开始制作一个全新的iOS项目
8.3 项目中都包含什么
8.4 小结
第9章 iOS应用程序:模型
9.1 实现模型
9.1.1 实体
9.1.2 属性
9.1.3 关系
9.2 托管对象类
9.2.1 创建类——错误的方法
9.2.2 为什么按照Xcode的方式做是个错误
9.2.3 正确的方法——使用mogenerator
9.3 准备
9.3.1 Utilities
9.3.2 扩展类
9.3.3 passer_rating
9.4 定制Core Data类
9.4.1 在项目中添加Game数据
9.4.2 在项目中添加Passer数据
9.4.3 一些测试数据
9.4.4 源代码控制和产品文件
9.5 让模型更容易调试
9.6 小结
第10章 iOS应用程序:控制器
10.1 Objective-C中的符号重命名
10.1.1 重构Objective-C方法名
10.1.2 重构类名
10.2 在Swift中重命名类
10.3 编辑View Controller
10.3.1 表视图
10.3.2 构建Passer List
10.3.3 新建Passer
10.4 生命周期问题及处理方法
10.5 真正的Passer Rating
10.5.1 另外一个bug
10.5.2 运行Passer Rating
10.6 小结
第11章 构建新视图
11.1 下一个视图控制器
11.1.1 如果想要添加新视图控制器
11.1.2 storyboard、scene和segue
11.2 创建视图
11.2.1 Passing中的Outlet和Assistant
11.2.2 Billboard视图
11.2.3 链接视图与视图控制器
11.2.4 特定场合下的自动布局
11.2.5 各种标签
11.2.6 清理
11.3 表视图
11.4 outlet
11.4.1 连接outlet
11.4.2 检查连接
11.4.3 连接GameListController
11.4.4 代码补全和片段
11.4.5 代码片段
11.5 测试Billboard View
11.6 小结
第12章 新视图的自动布局
12.1 为什么选择自动布局
12.1.1 Autoresizing的局限
12.1.2 Auto Layout
12.1.3 需要牢记的问题
12.2 重新制作Player Billboard
12.3 重构子视图布局
12.3.1 Playground
12.3.2 StatView
12.3.3 安装StatView
12.4 设计约束
12.5 两行、两个标签
12.6 实际的约束
12.6.1 默认(Any/Any)
12.6.2 AnyHeight(非Compact)
12.6.3 Landscape(wAny/hCompact)
12.6.4 解决问题
12.6.5 细节修改
12.7 小结
第13章 添加表格单元格
13.1 Game表
13.1.1 Table View中的outlet
13.1.2 添加所需的Protocol方法
13.1.3 添加Model-to-View的支持
13.1.4 原型元素
13.2 Game Table:第一次运行
13.3 自定义表格单元格
13.4 添加一些图形
13.4.1 带有图片的单元格
13.4.2 将Image视图与图片联系在一起
13.4.3 Assets目录
13.4.4 向Assets Catalog中添加图片
13.4.5 图标和启动图片
13.5 小结
第14章 添加编辑器
14.1 计划
14.2 添加模型场景
14.2.1 嵌入的View Controller
14.2.2 将Passer List与Editor相连
14.2.3 Static Table Cells
14.3 编辑器视图控制器
14.3.1 编辑器表
14.3.2 将数据传递给编辑器
14.3.3 从编辑器中获得数据
14.4 segue
14.5 小结
第15章 单元测试
15.1 Test Navigator
15.2 测试CSV Reader
15.2.1 CSV测试代码
15.2.2 测试数据
15.2.3 运行测试程序
15.3 测试和调试器
15.4 添加测试类
15.5 异步测试
15.5.1 测试异步代码
15.5.2 文档
15.6 XCTest断言
15.6.1 简单测试
15.6.2 等价
15.6.3 异常
15.7 小结
第16章 度量和分析
16.1 速度
16.1.1 Debug调试器
16.1.2 Instruments
16.2 XCTest和性能
16.3 内存
16.4 小结
第17章 iOS扩展
17.1 添加Today Target
17.2 设计挂件
17.3 框架内的共享库
17.4 Today扩展
17.5 构建依赖
17.6 结果
17.7 小结
第18章 配置
18.1 Apple开发者计划
18.1.1 通用(App Store)计划
18.1.2 企业计划
18.2 iOS的配置
18.2.1 你会看到什么
18.2.2 注册你的App
18.2.3 保护资源
18.2.4 提交iOS应用程序
18.3 功能编辑器
18.3.1 OSX独有的功能
18.3.2 iOS和OSX中都有的功能
18.3.3 iOS功能
18.4 OS X沙箱
18.4.1 为什么要选择沙箱
18.4.2 沙箱的缺点
18.5 Gatekeeper和Developer ID
18.5.1 获取Developer ID
18.5.2 使用Developer ID
18.5.3 限制
18.6 发布构建
18.6.1 基本的构建设置
18.6.2 调整构建设置
18.6.3 构建
18.7 小结
第三部分 Mac OSX开发中的Xcode
第19章 开始制作OSX应用程序
19.1 目标
19.2 开始
19.3 模型
19.3.1 从iOS移植
19.3.2 添加实体
19.4 制作菜单
19.4.1 Target/Action
19.4.2 First Responder
19.4.3 将数据载入LeagueDocument
19.4.4 适应托管文档
19.4.5 测试命令
19.4.6 为League数据确定一个类型
19.4.7 确定App如何处理League文件
19.4.8 应用程序和文档图标
19.5 小结
第20章 绑定:连接OSX应用程序
20.1 OSX中的Storyboard Segue
20.2 构建文档窗口
20.2.1 载入窗口
20.2.2 表视图
20.3 填充表——绑定
20.3.1 对象控制器
20.3.2 将表绑定到Team
20.3.3 将列绑定到Team属性
20.4 League文档数据的结构
20.4.1 从League表到Source List
20.4.2 捕获Team的选择
20.4.3 从Team到表
20.4.4 Passer部分
20.5 小结
第21章 本地化
21.1 本地化的工作原理
21.2 添加本地化
21.2.1 Base Localization
21.2.2 为什么需要Base Localization
21.3 哪些需要本地化
21.3.1 游戏细节视图:布局
21.3.2 游戏细节视图:代码
21.3.3 模块和命名空间
21.4 法语本地化
21.4.1 添加语言环境
21.4.2 由简入繁:Credits.rtf
21.4.3 本地化Main.storyboard
21.4.4 本地化资源
21.4.5 本地化程序字符串
21.4.6 genstrings
21.4.7 xliff文件
21.4.8 其他
21.5 本地化系统字符串
21.6 小结
第22章 程序包
22.1 简单的包:RTFD
22.2 bundle
22.3 应用程序的bundle
22.4 Info.plist File
22.5 Info.plist中用于应用程序的键
22.5.1 用于iOS和OSX的键
22.5.2 OSX中使用的键
22.5.3 iOS中使用的键
22.6 小结
第23章 属性列表
23.1 属性列表数据类型
23.2 编辑属性列表
23.2.1 属性列表编辑器
23.2.2 为什么不使用属性列表编辑器
23.3 其他格式
23.3.1 文本属性列表
23.3.2 二进制属性列表
23.3.3 JSON
23.4 特殊的属性列表
23.5 小结
第四部分 Xcode任务集
第24章 Xcode中的文档
24.1 Quick Help
24.1.1 Inspector
24.1.2 弹出窗口
24.2 快速打开
24.3 帮助
24.4 文档窗口
24.4.1 侧边导航栏
24.4.2 侧边栏的内容表
24.4.3 类信息
24.4.4 查找和导航
24.5 保持同步
24.6 自定义的Quick Help
24.6.1 C语言系列的文档
24.6.2 Doxygen
24.6.3 运行Doxygen
24.6.4 安装文档集合
24.7 Swift和reStructuredText
24.8 小结
第25章 Xcode构建系统
25.1 Xcode如何组织构建过程
25.2 构建变量
25.3 设置的层级
25.4 编辑构建变量
25.5 配置
25.6 配置文件
25.6.1 创建配置文件
25.6.2 SDK和指定的架构设置
25.6.3 预处理xcconfig文件
25.7 命令行工具
25.7.1 xcodebuild
25.7.2 xcode-select
25.7.3 xcrun
25.8 自定义构建规则
25.9 构建日志
25.10 简单的构建记录
25.11 小结
第26章 Instruments
26.1 Instruments是什么
26.2 运行Instruments
26.3 记录文档窗口
26.3.1 工具栏
26.3.2 记录区域
26.3.3 Detail区域
26.3.4 Extended Detail区域
26.3.5 库
26.4 追踪
26.4.1 记录
26.4.2 保存和重新打开
26.4.3 不启动instrument记录
26.5 Instruments
26.5.1 Behavior
26.5.2 Core Data
26.5.3 Dispatch
26.5.4 Filesystem
26.5.5 Graphics
26.5.6 Input/Output
26.5.7 Master Tracks
26.5.8 Memory
26.5.9 系统
26.5.10 System-iOS Energy Instruments
26.5.11 线程/锁
26.5.12 记录
26.5.13 UI Automation
26.5.14 用户界面
26.6 自定义Instruments
26.7 模板
26.7.1 全部平台
26.7.2 仅限iOS
26.7.3 仅限Mac
26.8 小结
第27章 调试
27.1 Scheme选项
27.1.1 Info
27.1.2 参数
27.1.3 选项
27.1.4 诊断
27.2 使用断点做更多的工作
27.3 视图层级
27.4 lldb命令行
27.5 小技巧
27.6 小结
第28章 零散的知识
28.1 技巧
28.1.1 一般技巧
28.1.2 代码折叠
28.1.3 Assistant编辑器
28.1.4 Instruments和调试
28.1.5 构建
28.2 陷阱
第五部分 附录
附录A 一些构建变量
附录B 资源