一种方法在框架中已贬值,但无法应用建议的更改

A method is depreciated in framework but cannot apply suggested change

我使用的是内部编写的框架,当我尝试减少警告的数量时,有一个不断出现,它是 'Implementing depreciated method'。有问题的方法是 openURL

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

当我转到框架代码时,我可以看到它在哪里贬值以及建议的更改

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation NS_DEPRECATED_IOS(4_2, 9_0, "Please use application:openURL:options:") __TVOS_PROHIBITED;

建议使用openURL:options。查看 openURL 的文档,它说我应该像下面这样使用

UIApplication *application = [UIApplication sharedApplication];
[application openURL:URL options:@{} completionHandler:nil];

但是,这不起作用,当我的方法看起来像这样时,我无法将参数 openURL 与上述方法分开

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{
..
}

如何将建议的新更改实施到我上面的现有方法调用中?

您需要实现的方法是application:openURL:options: instead of deprecated one application:openURL:sourceApplication:annotation:。所以用下面的方法替换你的方法

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options {
    //Your code ..
}

注意:-您尝试使用的实例方法openURL:options:completionHandler:用于异步打开指定URL处的资源。