首页 > 解决方案 > 方法在框架中折旧,但无法应用建议的更改

问题描述

我正在使用内部编写的框架,当我尝试减少警告数量时,我会不断出现一个警告,即“实施折旧方法”。有问题的方法是 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 
{
..
}

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

标签: objective-cxcodedeprecatedopenurl

解决方案


您需要实现的方法是application:openURL:options:不推荐使用的方法application:openURL:sourceApplication:annotation:。所以用下面的方法替换你的方法

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

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


推荐阅读