Xcode更新后,编译器开始在工作代码上引发错误(两个函数都在AppDelegate.swift中)。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool { FBLoginView.self FBProfilePictureView.self return true }
有错误:
/Users/../AppDelegate.swift:14:11:方法“ application( :didFinishLaunchingWithOptions :)” 提供的Objective-C方法“ application:didFinishLaunchingWithOptions:” 与协议中的可选需求方法“ application( :didFinishLaunchingWithOptions :)” 相冲突 ‘UIApplicationDelegate’
第二
func application(application: UIApplication, openURL url: NSURL, sourceApplication: NSString?, annotation: AnyObject) -> Bool { var wasHandled:Bool = FBAppCall.handleOpenURL(url, sourceApplication: sourceApplication as! String) return wasHandled }
有错误
/Users/../AppDelegate.swift:25:11:由方法’application( :openURL:sourceApplication:annotation :) 提供的Objective- C方法’application:openURL:sourceApplication:annotation:’ 与可选的需求方法’application冲突( :openURL:sourceApplication:annotation :)’在协议’UIApplicationDelegate’中
我了解我很可能希望您以某种方式将这两个功能整合在一起。我不明白为什么该代码突然在6.3中停止工作,尽管事实在6.2中起作用。
我不确定为什么编译器会引发错误,但是我确实看到这些方法的默认Swift版本有所不同。也许您可以将函数声明替换为使用普通Swift项目创建的函数声明:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool
我建议用上述方法替换您的方法声明,以查看它现在是否可以编译。
编辑1(9/21/2015):我已经确认这些是Xcode 7公开发布的最新信息。 他们在声明#2中删除了可选(annotation: AnyObject?)并使其成为(annotation: AnyObject)。
annotation: AnyObject?
annotation: AnyObject