【抽奖送书】跟戴铭学 iOS 编程:理顺核心知识点

1,516 阅读6分钟
原文链接: mp.weixin.qq.com

最近周报的老朋友,戴铭老师写了本新书《跟戴铭学 iOS 编程》。

这是一本新写的书,和极客时间上戴老师的专栏内容并不一样。适合对 iOS 有兴趣的开发人员,及经验丰富的 iOS 开发者学习。 主要针对 iOS 应用开发涉及的核心知识点进行讲解,分为 Swift、编译器、iOS 中的大前端技术三大章,从应用、进阶、未来三方面全方位分析 iOS 开发。内容由浅入深,循序渐进。所以你也不用担心看不懂,更不用担心干货不够! 这还是一本 “特别” 的书,特别之处在于所有的插图都是戴老师自己绘制的。真的是被技术又好,画画又好看的美男子给折服了!下面放几张照片感受一下:

下面是这本书的目录

第1章从 Swift 源码和第三方库源码层面来分析ios开发在实际工作中的常用核心知识,包括数据类型、编程范式、内存管理、网络处理、页面布局、完整的转译器和解释器等内容。

第2章通过分析 LLVM 源码、编译后的可执行文件内部结构、链接器来讲解 iOS 开发进阶知识,同时介绍在实际工作中的应用场景和示例。

第3章介绍在未来的iOS “大前端浪潮”中需要掌握的核心知识,包括 JavaScriptCore、WebCore 等。

第1章 Swift 

1.1 Swift简介 1.2 泛型 1.2.1 类型约束 1.2.2 关联类型 1.2.3 类型擦除 1.2.4 Where 语句 1.2.5 泛型和 Any 类型 1.3 集合 1.3.1 基本概念 1.3.2 迭代器 1.3.3 Sequence协议 1.3.4 Collection协议 1.3.5 Map 1.3.6 flatMap 1.3.7 Reduce 1.3.8 Array 1.3.9 弱引用的 Swift 数组 1.3.10 Dictionary 1.4 协议式编程 1.5 链式编程 1.6 Swift 内存管理 1.6.1 内存分配 1.6.2 Swift 派发机制 1.6.3 基本数据类型内存管理 1.6.4 struct 内存管理 1.6.5 class 内存管理 1.6.6 协议类型内存管理 1.6.7 泛型的内存管理 1.7 JSON 数据的处理 1.7.1 使用 JSONDecoder 1.7.2 CodingKey 协议 1.7.3 JSONDecoder 的 keyDecodingStrategy 属性 1.7.4 枚举定义 block 1.7.5 inout 1.8 网络请求 1.9 自动布局 SnapKit 库分析 1.9.1 给谁做约束 1.9.2 如何设置约束 1.9.3 设置完约束后如何处理 1.10 用Swift 实现一个简单的语言转译器 1.10.1 转译器简介 1.10.2 词法分析器 1.10.3 语法分析器 1.10.4 遍历器 1.10.5 转换器 1.10.6 代码生成器 1.10.7 Scheme的其他特性 1.10.8 Babel 1.11 用Swift 开发一个简单的解释器 1.11.1 四则运算 1.11.2 算术表达式 1.11.3 中间表示 1.11.4 变量 1.11.5 属性 1.11.6 静态检查 

第2章 编译器 2.1 LLVM 简介 2.2 编译流程 2.3 使用clang命令编译 .m 文件 2.3.1 构建 Target 2.3.2 Target 在构建过程中的控制 2.4 clang static analyzer 2.5 IR 代码 2.5.1 IR 结构 2.5.2 LLVM IR 优化 2.5.3 SSA 2.6 clang 前端组件 2.6.1 库的介绍 2.6.2 使用 libclang 进行语法分析 2.7 Driver 2.7.1 Driver 的工作流程 2.7.2 Parse 2.7.3 Pipeline 2.7.4 Action 2.7.5 Bind 2.7.6 Translate 2.7.7 Jobs 2.7.8 Execute 2.8 clang attribute 2.9 clang 警告处理 2.10 通过LibTooling 控制语法树 2.11 clang 插件 2.12 LLVM Backend 2.12.1 CodeGen 阶段 2.12.2 SelectionDAG 2.12.3 Register Allocation 2.12.4 Code Emission 2.13 LLVM 优化 2.14 Swift 编译 2.15 编译后生成的二进制内容 Link Map File2.16 编译后生成的 dSYM 文件 2.17 Mach-O 文件 2.18 如何利用 Mach-O 2.18.1 打印堆栈信息,保存现场 2.18.2 通过hook获取更多信息的方法 2.18.3 hook msgsend 方法 2.18.4 统计方法调用频次 2.18.5 找出 CPU 使用的线程堆栈 2.18.6 Demo 2.19 dyld 2.20 LLVM 工具链 2.20.1 获取 LLVM 2.20.2 编译 LLVM 的源代码 2.20.3 LLVM 源代码工程目录介绍 2.20.4 lib 目录介绍 2.20.5 工具链命令介绍 

第3章 iOS中的大前端技术 3.1 大前端技术简介 3.2 Weex 实现技术 3.2.1 将iOS 工程集成 WeexSDK 3.2.2 自定义端内能力的 Module3.2.3 读取用 JavaScript 写的 Weex 内容 3.2.4 从 Vue 代码到 JS bundle 3.2.5 在端内运行 JS bundle 的原理 3.3 JavaScriptCore 3.3.1 JavaScriptCore 介绍 3.3.2 JavaScriptCore 全貌 3.3.3 JavaScriptCore 与 WebCore 3.3.4 词法、语法分析 3.3.5 从代码到 JIT 的过程 3.3.6 分层编译 3.3.7 类型分析 3.3.8 指令集架构 3.3.9 JavaScript 3.4 WebCore 3.4.1 浏览器历史 3.4.2 WebKit 全貌 3.4.3 WTF 3.4.4 Loader 3.4.5 HTML 词法解析 3.4.6 HTML 语法解析 3.4.7 构建 DOM Tree 3.4.8 CSS 3.4.9 RenderObject Tree 3.4.10 Layout

这是一个硬广,所以必须给大家发一波福利。福利一共有三个。

1. 微博转发抽奖。 送 「《跟戴铭学 iOS 编程:理顺核心知识点》签名款 」五本。 微博搜索 “iOS 周报” 转发置顶微博即可参与【《跟戴铭学 iOS 编程》签名款】抽奖活动。

2. 小程序点击抽奖。

点击下方小程序,送「《跟戴铭学 iOS 编程:理顺核心知识点》」五本。

3. 折扣购书 对于等不及想早点看的读者,可以扫描下方二维码购书。(49 一本,Almost 全网最低价)