ios - SDK版本10的功能可以在系统版本8的设备上运行吗?

标签 ios objective-c

我创建了一个调用某人的按钮,我曾经这样编写代码:

[[UIApplication sharedApplication] openURL:@"123"];

但现在我注意到这个函数有一个警告,在 iOS10 中苹果提供了一个新函数来代替它,这里是:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"123"] options:@{} completionHandler:^(BOOL success) {

                }];

它有一个参数,所以如果用户单击确认 按钮,我可以得到。
但是我不确定这个功能是否会在系统版本为 8 的设备上出现任何错误;

英语不是我的母语,请原谅我的语法错误,我在谷歌上搜索但没有找到有用的东西。 有任何想法吗 ?
非常感谢!
刘畅。

最佳答案

你的担心是对的;如果您尝试在早期版本的 iOS 上调用 iOS 10 方法,您将收到运行时“不响应选择器”异常。您有几个选择:

  1. 使用已弃用的方法;它现在会继续工作,但在未来的某些 iOS 版本中将不再受支持,因此您最终将不得不处理它。
  2. 仅针对较新版本的 iOS; iOS 用户倾向于升级,针对 iOS 9.x+ 将覆盖绝大多数 iOS 用户。这种情况下的方法仅适用于 iOS 10,此时您可能不希望切断 iOS 9(甚至 iOS 8)用户
  3. 在运行时检查 iOS 版本并调用适当的方法:

if ([[[UIDevice currentDevice] systemVersion] floatValue] < 10.0) {
    [[UIApplication sharedApplication] openURL:@"123"];
} else {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"123"] options:@{} completionHandler:^(BOOL success) {

            }];
}

关于ios - SDK版本10的功能可以在系统版本8的设备上运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44042880/

相关文章:

objective-c - 将整数添加到 NSMutableArray

android - Ionic 3 - 如何实现 viewpager?

ios - iOS 5.1 中未捆绑 mp4 和 m4v 文件

ios - IOS App上的错误处理?

iphone - 如何从 Facebook 登录重定向到 iphone 应用程序

ios - 如何在IOS中从sqlite3_stmt sqlite3获取long long值?

objective-c - 如何通过单击按钮更改 UIPickerView 中行的大小?

ios - Auth0 Credentials 对象的到期日期属性始终为零

ios - 将 UITouchesEvent 编码为 NSData 时出错

ios - CBPeripheralManager 延迟停止广告/位置管理器范围已停止 iBeacon