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

Ale*_*ell 5 uiapplicationdelegate ios method-parameters ios12

在 iOS 12 中,UIApplicationDelegate 协议定义:

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

而在以前的 iOS 版本中,这是定义的:

- (BOOL) application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *restorableObjects))restorationHandler
Run Code Online (Sandbox Code Playgroud)

这些定义的不同之处在于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 结束测试版并且我要提交 iOS 12 版本?那么它会在运行时向后兼容较低的 iOS 版本吗?

感谢您的任何帮助!