本期概要
- 话题:启用新封面
- Tips:Swift 中的预编译
- 面试模块:dyld 2 和 dyld 3 的区别;编译流程
- 优秀博客:包依赖管理工具
- 学习资料:从头开发一个迷你 Go 语言编译器
- 开发工具:git 资源库浏览工具 Tig
本期话题
@zhangferry:2022 年第一期摸鱼周报,从本期开始我们会使用新的封面,新封面由设计师朋友 Polaris 设计。这个场景表达的主题就是摸鱼,工作中的摸鱼不代表我们不尽职,而是我们对自由生活的向往。既要努力工作也要 Work Life Blance,2022 年,加油!
开发Tips
整理编辑:zhangferry
Swift 中的预编译
Clang 中有预编译宏的概念,在 Xcode 中其对应的是 Build Setting -> Apple Clang - Preprocessing 中的 Preprocessor Macros。这里可以根据不同的 Configuration 设置不同的预编译宏命令,其中 Debug 环境下的 DEBUG=1 就是内置的宏命令,我们通常使用的以下写法就是对应的这个配置:
```objectivec
if DEBUG
// debug action
end
```
如果需要新增 Configuration,比如 Stage,我们想要一个新的预编译宏比如 STAGE 表示它,如果这么做:
在 Objective-C 的代码中是可行的,对于 Swift 代码则无效。这是因为 Swift 使用的编译器是 swiftc,它无法识别 clang 里定义的预编译宏。
解决方案是利用 SWIFT_ACTIVE_COMPILATION_CONDITIONS
这个配置变量,它对应 Build Setting 里的 Active Compilation Conditions。做如下设置即可让 STAGE 宏供 Swift 代码使用:
面试解析
整理编辑:zhangferry
dyld 2 和 dyld 3 有哪些区别
dyld 是动态加载器,它主要用于动态库的链接和程序启动加载工作,它目前有两个主要版本:dyld 2 和 dyld 3。
dyld 2