代码之家  ›  专栏  ›  技术社区  ›  user616076

方法在框架中折旧,但不能应用建议的更改

  •  0
  • user616076  · 技术社区  · 6 年前

    我使用的是一个内部编写的框架,当我试图减少警告的数量时,会有一个不断出现的框架,那就是“实现折旧方法”。所讨论的方法是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 
    {
    ..
    }
    

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Nirav D    6 年前

    您需要实现的方法是 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处的资源。