如何在 Swift 中有条件地为 tvOS 编译
How to conditionally compile for tvOS in Swift
如何在 Swift 语言的同一文件中有条件地编译 iOS 和 tvOS 的代码?
我已经尝试了苹果文档中提到的 Objective-C 样式 #if
等 TARGET_OS_TV
以及其他一些答案。但是我还没有找到 Swift 代码的有效解决方案。
我没有参考文档——虽然我想要一个——但我看过 Apple 示例代码,其中包含以下部分:
#if os(iOS) || os(tvOS)
#endif
#if <build configuration> && !<build configuration>
statements
#elseif <build configuration>
statements
#else
statements
#endif
构建配置可以是:-
os(abc) 其中 abc 的有效值为 OSX、iOS、watchOS、tvOS、Linux
arch(abc) 其中 abc 的有效值为 x86_64、arm、arm64、i386
请参阅 Apple 文档 here:
#if os(OSX)
// compiles for OS X
#elseif os(iOS)
// compiles for iOS
#elseif os(tvOS)
// compiles for TV OS
#elseif os(watchOS)
// compiles for Apple watch
#endif
Apple 在 Targeting Apple TV in Your Apps
标题下也涵盖了这一点
Listing 1-1 Conditionalizing code for tvOS in Objective-C
#if TARGET_OS_TV
NSLog(@"Code compiled only when building for tvOS.");
#endif
Listing 1-2 Conditionalizing code for tvOS in Swift
#if os(tvOS)
NSLog(@"Code compiled only when building for tvOS.");
#endif
if #available(tvOS 9.1,*) {
print("Code that executes only on tvOS 9.1 or later.")
}
如何在 Swift 语言的同一文件中有条件地编译 iOS 和 tvOS 的代码?
我已经尝试了苹果文档中提到的 Objective-C 样式 #if
等 TARGET_OS_TV
以及其他一些答案。但是我还没有找到 Swift 代码的有效解决方案。
我没有参考文档——虽然我想要一个——但我看过 Apple 示例代码,其中包含以下部分:
#if os(iOS) || os(tvOS)
#endif
#if <build configuration> && !<build configuration>
statements
#elseif <build configuration>
statements
#else
statements
#endif
构建配置可以是:-
os(abc) 其中 abc 的有效值为 OSX、iOS、watchOS、tvOS、Linux
arch(abc) 其中 abc 的有效值为 x86_64、arm、arm64、i386
请参阅 Apple 文档 here:
#if os(OSX)
// compiles for OS X
#elseif os(iOS)
// compiles for iOS
#elseif os(tvOS)
// compiles for TV OS
#elseif os(watchOS)
// compiles for Apple watch
#endif
Apple 在 Targeting Apple TV in Your Apps
标题下也涵盖了这一点Listing 1-1 Conditionalizing code for tvOS in Objective-C
#if TARGET_OS_TV
NSLog(@"Code compiled only when building for tvOS.");
#endif
Listing 1-2 Conditionalizing code for tvOS in Swift
#if os(tvOS)
NSLog(@"Code compiled only when building for tvOS.");
#endif
if #available(tvOS 9.1,*) {
print("Code that executes only on tvOS 9.1 or later.")
}