Swift:条件编译

Swift:条件编译,第1张

概述应用场景 在项目工程中编写代码,但是需要对部分功能做区分处理(系统、设备等)。就需要使用系统的条件编译方式来处理。 API 及语言 Swift 核心逻辑/代码 主要是通过#if xx #elseif 应用场景

在项目工程中编写代码,但是需要对部分功能做区分处理(系统、设备等)。就需要使用系统的条件编译方式来处理。

API 及语言

Swift

核心逻辑/代码

主要是通过#if xx #elseif xxx #else xx #endif 条件编译代码实现。条件中 xx 需要使用系统已经定义的。

条件编译的工程设置

可以在 target -> BulID Settings -> swift compiler - custom flage 选项下的 Active compilation Conditions 中设置条件编译的标示,比DEBUG 或者自定义 TEST。也可以在Other Swift Flags 选项下添加标示(需要在标示前添加 -D)

系统版本检测

使用if #available(*,*,*){} 代码条件检测系统版本,若为 true,则执行 *** 作

API 可用性说明

设置类、结构体、函数等设置系统限制,或者不可使用等说明,在调用的时候,Xcode 会提示。核心代码就是使用 @available() 代码。

示例代码设置条件代码
//  *** 作系统:macOS/iOS/tvOS/watchOS/linux/AndroID/windows/FreeBSD#if os(macOS) || os(iOS)// cpu构架:i386\x86_64\arm\arm64#elseif arch(x86_64) || arch(arm64)// swift 版本#elseif swift(<5) && swift(>=3)// 模拟器#elseif targetEnvironment(simulator)// 可以导入某模块#elseif canimport(Foundation)#else#endif
系统版本检测
if #available(iOS 10,macOS 10.12,*) {    // 对于 iOS 平台,只在 iOS10 及以上版本执行    // 对于 macOS 平台,只在 macOS 10.12 及以上版本执行    // 最后的 * 标示在其他所有平台都执行}
API 可用性说明
/// 仅在 iOS 10 或者 macOS 10.15 及以上使用@available(iOS 10,macOS 10.15,*)class Person {}struct Student {    // study_ 方法不可用,使用 study    @available(*,unavailable,renamed: "study")    func study_() {}    func study() {}        // 在 iOS 11 或者 macOS 10.12 及以上版本不可以使用 run 函数    @available(iOS,deprecated: 11)    @available(macOS,deprecated: 10.12)    func run() {}}
总结

以上是内存溢出为你收集整理的Swift:条件编译全部内容,希望文章能够帮你解决Swift:条件编译所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/998897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存