2016-03-15 66 views
5

例如,假设我的iOS应用程序支持iOS 7.0,并且我想提醒一下。在iOS 7中,我会使用UIAlertView。在iOS 8/9中,这已被UIAlertController弃用。我必须检查if currentVersion > iOS7,然后创建iOS8 +的两个警报alertView和iOS8 +的alertController?或者可以在iOS7应用中使用UIAlertView,尽管它最终会在iOS9 +设备上运行?当我支持较低的iOS版本时,是否必须处理弃用?

我是否需要检查当前的iOS版本是什么,并实现多个对象(每个版本一个),在这样的简单事件中是这样的

+0

您可能会觉得有用的市场份额统计信息:https://david-smith.org/iosversionstats/ –

+0

基本上,您需要考虑在您用于编译项目的实际SDK中弃用的所有内容。 – holex

回答

1

弃用只是一个注意事项,可能会在将来的版本中删除一个功能。尽管已弃用的类或方法仍然有效。

因此,您可以继续使用UIAlertView,并面临未来iOS版本发生故障的风险。它仍然可以在iOS 9上运行。不过,不能保证它会继续在iOS 10上运行。

这里最好的解决方案是check whether UIAlertController is available at runtime。如果是,请将该类用于提醒,否则请回到UIAlertView

您通常会做不是检查iOS版本!最好检查一个方法或类是否可用,除非在极少数情况下,Apple 明确指出告诉您检查iOS版本:这种情况发生在被认为是私有的方法被Apple公开时。

+0

经常弃用的功能将“工作”,但他们将有问题 –

+0

@BradThomas:你是指什么样的问题?在'UIAlertView'的情况下,这件事总是有问题,这就是为什么它通过'UIAlertController'成功的原因。除此之外,我不知道任何已经改变其行为的废弃的类或方法(当然,直到它被移除)。 – DarkDust

+0

在我们的项目中,使用UIAlertView升级到iOS8会导致出现片状行为。问题,如http://stackoverflow.com/questions/26228729/ios-8-uialertview-uialertcontroller-not-showing-text-or-buttons –

相关问题