Swift条件编译

一、 Flag

if DEBUG

let name = "name"

print("实际内存大小", MemoryLayout.size(ofValue: name))

print("内存对齐大小", MemoryLayout.alignment(ofValue: name))

print("分配的内存大小", MemoryLayout.stride(ofValue: name))

endif

可以在 Build settingsswift compiler - custom flags 中设置Flag(eg: MYDEBUG)

image.png

二、System

if os(macOS) || os(tvOS) || os(iOS) || os(watchOS)

...

endif

三、是否能import

if canImport(SnapKit)

...

endif

四、芯片架构

if arch(x86_64) || arch(arm) || arch(arm64) || arch(i386)

...

endif

五、Swift编译版本/版本

暂不清楚 compiler() 与 swift() 的区别

if compiler(>=5.4.2) || compiler(<1.0)

...

endif

if swift(>=5.4)

...

endif

六、目标环境

目前应该只有模拟器simulator一个值

if targetEnvironment(simulator)

...

endif

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在 C 系语言中,可以使用 #if 或者 #ifdef 之类的编译条件分支来控制哪些代码需要编译,而哪些代码不需要...
    危险地带_浅笑阅读 989评论 1 0
  • 语法 condition的设定 os(para),para可以为OSX, iOS,没有办法设定具体的版本号 arc...
    无影灯阅读 607评论 0 1
  • 方法可选参数os()macOS, iOS, tvOS, watchOS, Linuxarch()x86_64, a...
    gaookey阅读 881评论 0 3
  • 1、why 在实际开发中我们常常需要区分不同的环境,此处以最简单的开发与生产环境为例,每次打包通过修改代码区分不同...
    oneday527阅读 7,004评论 1 10
  • 应用场景 在项目工程中编写代码,但是需要对部分功能做区分处理(系统、设备等)。就需要使用系统的条件编译方式来处理。...
    我为双鱼狂阅读 1,898评论 0 7