Mat*_*uch 19 versioning macros xcode swift
我想使用Xcode 9将iOS 11代码添加到我的项目中,同时保留使用仅支持iOS 10的Xcode 8编译项目的选项.
在Objective-C中,我可以通过使用预处理程序指令来检查是否__IPHONE_11_0已定义.如果我使用早于iOS 11的Base SDK进行编译,这将隐藏代码.像这样:
#ifdef __IPHONE_11_0
if (@available(iOS 11.0, *)) {
self.navigationController.navigationBar.prefersLargeTitles = YES;
}
#endif
Run Code Online (Sandbox Code Playgroud)
有没有办法在Swift中做到这一点?
if #available(iOS 11.0, *) 不起作用,因为这是一个运行时检查.
Lil*_*ard 18
iOS 11 SDK附带Swift 3.2(或Swift 4),因此您可以使用Swift版本检查来完成同样的事情:
#if swift(>=3.2)
if #available(iOS 11.0, *) {
…
}
#endif
Run Code Online (Sandbox Code Playgroud)
这是Apple建议的解决方案:
if #available(iOS 11.0, *) {
// iOS 11 specific stuff here
} else {
// non iOS 11 stuff here
}
Run Code Online (Sandbox Code Playgroud)
请参考此资源(有关更多详细信息,请观看标记6:50的视频)
| 归档时间: |
|
| 查看次数: |
7752 次 |
| 最近记录: |