原文链接:http://nshipster.com/swift-system-version-checking/
前言
C VS Swift
- C不安全 (这里主要指指针的使用)
- C中有未定义的行为 (只声明,不初始化)
- C中的预处理器解释功能缺陷
OC中的API检查主要是通过C预处理根据当前classs发送respondsToSelector:
和 instancesRespondToSelector:
来达成的:
#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000
if ([NSURLSession class] &&
[NSURLSessionConfiguration respondsToSelector:@selector(backgroundSessionConfigurationWithIdentifier:)]) {
// ...
}
#endif
Swift根据特定系统以及指令集架构对编译器做了完全的限制。
#if DEBUG
println("OTHER_SWIFT_FLAGS = -D DEBUG")
#endif
Function Valid Arguments
os() OSX, iOS
arch() x86_64, arm, arm64, i386