一个应该如何处理iOS版本特定的UIApplicationDelegate协议方法参数类型?

时间:2018-08-27 10:50:56

标签: ios uiapplicationdelegate ios12 method-parameters

在iOS 12中,UIApplicationDelegate协议定义:

- (BOOL) application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler

而在先前的iOS版本中,则对此进行了定义:

- (BOOL) application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler

这些定义的不同之处在于restoreHandler的参数类型。因此,在Xcode 10中,我们现在收到警告:

  

在'application:continueUserActivity:restorationHandler:'的实现中参数类型冲突:'void(^ _Nonnull __strong)(NSArray> * _Nullable __strong)'与'void(^ __ strong _Nonnull)(NSArray * __ strong)'

我仍在研究可能会在iOS 12之前发布的更新,但我也在为支持iOS 12打下基础。我不确定如何在多个iOS版本中处理不同的参数类型。

通常,在一种方法中,我将使用类似@available的代码来根据运行时检测到的iOS版本分支代码,但是在这种情况下,我不知道最佳实践是什么。我当然不想为此烦恼!我是否应该仅避免更改任何内容并接受警告,直到Xcode 10超出Beta版并且我要提交iOS 12?然后,它会在运行时向后兼容较小的iOS版本吗?

谢谢您的帮助!

0 个答案:

没有答案