Xcode开发中调用iOS部署目标不支持的API会触发警告吗?
关于Xcode 9设置Deployment Target后API警告的问题解答
嘿,这个问题问得很实在,刚好能给你讲明白~
答案是:会的,但需要注意一些细节,具体情况如下:
当你按照「项目」>「目标」>「Build Settings」>「Deployment > iOS Deployment Target」路径把部署目标设为iOS 8.0后,Xcode默认会开启API可用性检查。如果你的代码里直接调用了iOS 8及以下系统不支持的API(比如iOS 9才新增的
UIStackView、iOS 10的UserNotifications框架等),Xcode会立刻抛出警告,提示你「该API仅在iOS X.X或更高版本可用」,甚至会直接标红报错(取决于你的编译配置)。但如果你已经通过版本适配代码处理了兼容性,比如用Swift的
#available关键字或者Objective-C的if (@available(iOS 9.0, *))做了条件判断,像这样:
// Swift示例 if #available(iOS 9.0, *) { let stackView = UIStackView() // 执行iOS 9+的逻辑 } else { // 兼容iOS 8的替代方案 }
// Objective-C示例 if (@available(iOS 9.0, *)) { UIStackView *stackView = [[UIStackView alloc] init]; // iOS 9+逻辑 } else { // iOS 8兼容逻辑 }
这种情况下Xcode就不会再发出警告,因为它能识别到你已经处理了旧系统的适配问题。
- 额外提一句:如果你没看到预期的警告,可以去检查Build Settings里的
Other Warning Flags,确保没有关闭-Wpartial-availability这个编译选项(Xcode 9默认是开启的),这个选项就是控制API可用性警告的开关。
作为Xcode新手,你可以自己快速验证:随便写一行调用高版本API的代码,比如直接初始化UIStackView,看看Xcode会不会弹出警告——它甚至会给你提供快速修复按钮,帮你自动生成版本判断的代码框架,非常友好~
内容的提问来源于stack exchange,提问作者Dale
相关产品推荐
相关产品推荐

