更改为私有或@nonobjc
Posted
技术标签:
【中文标题】更改为私有或@nonobjc【英文标题】:change to private or @nonobjc 【发布时间】:2016-10-05 20:10:16 【问题描述】:我正在编写一个创建社交媒体类型应用程序的教程。我正在使用 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;
希望这会有所帮助且有意义。
【问题讨论】:
【参考方案1】:通常,有关需要将应用委托方法更改为 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 开始,this 已被标记为弃用:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool
...
最后一个版本最接近于您与我们共享的那个 Objective-C 代码示例。
【讨论】:
谢谢 Rob,现在说得通了。以上是关于更改为私有或@nonobjc的主要内容,如果未能解决你的问题,请参考以下文章