如何通过Swift扩展实现委托方法

时间:2016-05-25 07:46:34

标签: ios objective-c swift uiapplicationdelegate swift-extensions

我的项目是Obj-C和Swift的混合,我正在尝试用Swift扩展我的AppDelegate类。

现在我有AppDelegate.mAppDelegate.hAppDelegate.swift。大多数方法都在Obj-C文件中,但我试图只实现其中一种方法:

extension AppDelegate {

    func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {

    }
}

然而它抱怨:

AppDelegate.swift:11:10: Method 'application(_:continueUserActivity:restorationHandler:)' with Objective-C selector 'application:continueUserActivity:restorationHandler:' conflicts with previous declaration with the same Objective-C selector

这是Swift扩展的限制吗?或者有没有办法在我的Swift扩展文件中实现这个委托方法?

1 个答案:

答案 0 :(得分:3)

你不能做那样的事情。 AppDelegate定义了此方法(UIApplicationDelegate协议说明了这一点)。

最简单的解决方案是在swift中重写AppDelegate

您还有更难的解决方案 - 从UIApplicationDelegate中删除AppDelegate并在您的扩展程序中实施此协议。如果AppDelegate相当大,可能会引发意外错误。