更改为私人或@nonobjc

change to private or @nonobjc

我正在编写一个创建社交媒体类型应用程序的教程。我正在使用 Firebase 并且已经实现了那里指南中需要的所有东西,除了下面的这段代码外,一切正常。

说有错误并要求修复,但将其设为私有或添加@nonobjc。

这是我的代码:

func application(_ application: UIApplication, open url: URL, sourceApplication: String, annotation: AnyObject?) -> Bool {
    return FBSDKApplicationDelegate.sharedInstance().application(application, open: url as URL!, sourceApplication: sourceApplication, annotation: annotation)
}

Firebase 网站上有一个代码版本,但它在 Objective C:

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

    BOOL handled = [[FBSDKApplicationDelegate sharedInstance] application:application
                                                                  openURL:url
                                                        sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                                                               annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];

    return handled;
}

希望这对您有所帮助并且有意义。

一般来说,关于应用程序委托方法需要更改为 private@nonobjc 的警告表明应用程序委托方法签名不正确。考虑:

func application(_ application: UIApplication, open url: URL, sourceApplication: String, annotation: AnyObject?) -> Bool {
    ...
}

已替换为:

func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
    ...
}

而且,根据 UIApplicationDelegate 协议定义,从 iOS 9 开始,这已被标记为已弃用,取而代之的是:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    ...
}

最后一个演绎版与您与我们分享的 Objective-C 代码示例最接近。