iOS摸鱼周报 第四十期

本期iOS摸鱼周报探讨了Swift预编译宏的使用,指出Swiftc无法识别Clang预编译宏的解决方案。此外,详细解析了dyld 2与dyld 3的区别,包括dyld 3的启动闭包优化,以及编译流程的前端、优化器、后端和链接阶段的工作原理。还分享了关于CocoaPods、Swift Package Manager的博客文章和学习资源。
摘要由CSDN通过智能技术生成

本期概要

  • 话题:启用新封面
  • 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值