内容简介
前言
第一部分 语言
第1章 Swift架构纵览
1.1 基础
1.2 万物皆对象
1.3 对象类型的3种风格
1.4 变量
1.5 函数
1.6 Swift文件的结构
1.7 作用域与生命周期
1.8 对象成员
1.9 命名空间
1.10 模块
1.11 实例
1.12 为何使用实例
1.13 self
1.14 隐私
1.15 设计
1.15.1 对象类型与API
1.15.2 实例创建、作用域与生命周期
1.15.3 小结
第2章 函数
2.1 函数参数与返回值
2.1.1 Void返回类型与参数
2.1.2 函数签名
2.2 外部参数名
2.3 重载
2.4 默认参数值
2.5 可变参数
2.6 可忽略参数
2.7 可修改参数
2.8 函数中的函数
2.9 递归
2.10 将函数作为值
2.11 匿名函数
2.12 定义与调用
2.13 闭包
2.13.1 闭包是如何改善代码的
2.13.2 返回函数的函数
2.13.3 使用闭包设置捕获变量
2.13.4 使用闭包保存捕获的环境
2.14 柯里化函数
第3章 变量与简单类型
3.1 变量作用域与生命周期
3.2 变量声明
3.3 计算初始化器
3.4 计算变量
3.5 setter观察者
3.6 延迟初始化
3.7 内建简单类型
3.7.1 Bool
3.7.2 数字
3.7.3 String
3.7.4 Character
3.7.5 Range
3.7.6 元组
3.7.7 Optional
第4章 对象类型
4.1 对象类型声明与特性
4.1.1 初始化器
4.1.2 属性
4.1.3 方法
4.1.4 下标
4.1.5 嵌套对象类型
4.1.6 实例引用
4.2 枚举
4.2.1 带有固定值的Case
4.2.2 带有类型值的Case
4.2.3 枚举初始化器
4.2.4 枚举属性
4.2.5 枚举方法
4.2.6 为何使用枚举
4.3 结构体
4.3.1 结构体初始化器、属性与方法
4.3.2 将结构体作为命名空间
4.4 类
4.4.1 值类型与引用类型
4.4.2 子类与父类
4.4.3 类初始化器
4.4.4 类析构器
4.4.5 类属性与方法
4.5 多态
4.6 类型转换
4.7 类型引用
4.8 协议
4.8.1 为何使用协议
4.8.2 协议类型测试与转换
4.8.3 声明协议
4.8.4 可选协议成员
4.8.5 类协议
4.8.6 隐式必备初始化器
4.8.7 字面值转换
4.9 泛型
4.9.1 泛型声明
4.9.2 类型约束
4.9.3 显式特化
4.9.4 关联类型链
4.9.5 附加约束
4.10 扩展
4.10.1 扩展对象类型
4.10.2 扩展协议
4.10.3 扩展泛型
4.11 保护类型
4.11.1 AnyObject
4.11.2 AnyClass
4.11.3 Any
4.12 集合类型
4.12.1 Array
4.12.2 Dictionary
4.12.3 Set
第5章 流程控制与其他
5.1 流程控制
5.1.1 分支
5.1.2 循环
5.1.3 跳转
5.2 运算符
5.3 隐私性
5.3.1 Private声明
5.3.2 Public声明
5.3.3 隐私性规则
5.4 内省
5.5 内存管理
5.5.1 弱引用
5.5.2 无主引用
5.5.3 匿名函数中的弱引用与无主引用
5.5.4 协议类型引用的内存管理
第二部分 IDE
第6章 Xcode项目剖析
6.1 新建项目
6.2 项目窗口
6.2.1 导航窗格
6.2.2 辅助窗格
6.2.3 编辑器
6.3 项目文件及其依赖
6.4 目标
6.4.1 构建阶段
6.4.2 构建设置
6.4.3 配置
6.4.4 方案与目标
6.5 从项目到运行应用
6.5.1 构建设置
6.5.2 属性列表设置
6.5.3 nib文件
6.5.4 其他资源
6.5.5 代码文件与应用启动过程
6.5.6 框架与SDK
6.6 对项目内容进行重命名
第7章 nib管理
7.1 nib编辑器界面概览
7.1.1 文档大纲
7.1.2 画布
7.1.3 查看器与库
7.2 nib加载
7.2.1 何时加载nib
7.2.2 手工加载nib
7.3 连接
7.3.1 插座变量
7.3.2 nib拥有者
7.3.3 自动配置nib
7.3.4 误配置的插座变量
7.3.5 删除插座变量
7.3.6 创建插座变量的其他方式
7.3.7 插座变量集合
7.3.8 动作连接
7.3.9 创建动作的其他方式
7.3.10 误配置的动作
7.3.11 nib之间的连接——不行!
7.4 nib实例的其他配置
第8章 文档
8.1 文档窗口
8.2 类文档页面
8.3 示例代码
8.4 快速帮助
8.5 符号
8.6 头文件
8.7 互联网资源
第9章 项目的生命周期
9.1 设备架构与条件代码
9.1.1 向后兼容
9.1.2 设备类型
9.2 版本控制
9.3 编辑与代码导航
9.3.1 自动补令
9.3.2 代码片段
9.3.3 Fix-it与实时语法检查
9.3.4 导航
9.3.5 查找
9.4 在模拟器中运行
9.5 调试
9.5.1 原始调试
9.5.2 Xcode调试器
9.6 测试
9.7 清理
9.8 在设备中运行
9.8.1 在没有开发者计划成员资格的情况下运行
9.8.2 获取开发者计划成员资格
9.8.3 获取证书
9.8.4 获取开发配置文件
9.8.5 运行应用
9.8.6 配置文件与设备管理
9.9 分析
9.9.1 仪表盘
9.9.2 Instruments
9.10 本地化
9.10.1 本地化Info.plist
9.10.2 本地化nib文件
9.10.3 本地化代码字符串
9.10.4 使用XML文件进行本地化
9.11 归档与发布
9.12 Ad Hoc发布
9.13 最后的准备
9.13.1 应用图标
9.13.2 其他图标
9.13.3 启动图片
9.13.4 屏幕截图与视频预览
9.13.5 属性列表设置
9.14 向App Store提交应用
第三部分 Cocoa
第10章 Cocoa类
10.1 子类化
10.2 类别与扩展
10.2.1 Swift如何使用扩展
10.2.2 你应该如何使用扩展
10.2.3 Cocoa如何使用类别
10.3 协议
10.3.1 非正式协议
10.3.2 可选方法
10.4 Foundation类精讲
10.4.1 常用的结构体与常量
10.4.2 NSString及相关类
10.4.3 NSDate及相关类
10.4.4 NSNumber
10.4.5 NSValue
10.4.6 NSData
10.4.7 相等与比较
10.4.8 NS1ndexSet
10.4.9 NSArray与NSMutableArray
10.4.10 NSDictionary与NSMutableDictionary
10.4.11 NSSet及相关类
10.4.12 NSNull
10.4.13 不变与可变
10.4.14 属性列表
10.5 访问器、属性与键值编码
10.5.1 Swift访问器
10.5.2 键值编码
10.5.3 键值编码的使用
10.5.4 KVC与插座变量
10.5.5 键路径
10.5.6 数组访问器
10.6 NSObject揭秘
第11章 Cocoa事件
11.1 为何使用事件
11.2 子类化
11.3 通知
11.3.1 接收通知
11.3.2 取消注册
11.3.3 发布通知
11.3.4 NSTimer
11.4 委托
11.4.1 Cocoa委托
11.4.2 实现委托
11.5 数据源
11.6 动作
11.7 响应器链
11.7.1 推迟职责
11.7.2 Nil-Targeted动作
11.8 键值观测
11.9 事件泥潭
11.10 延迟执行
第12章 内存管理
12.1 Cocoa内存管理的原理
12.2 Cocoa内存管理的原则
12.3 ARC及其作用
12.4 Cocoa对象管理内存的方式
12.5 自动释放池
12.6 实例属性的内存管理
12.7 保持循环与弱引用
12.8 值得注意的内存管理情况
12.9 nib加载与内存管理
12.10 CFTypeRefs的内存管理
12.11 属性的内存管理策略
12.12 调试内存管理的错误
第13章 对象间通信
13.1 实例化可见性
13.2 关系可见性
13.3 全局可见性
13.4 通知与KVO
13.5 模型-视图-控制器
附录A C、Objective-C与Swift