我的项目是Obj-C和Swift的混合,我正在尝试用Swift扩展我的AppDelegate类。
现在我有AppDelegate.m
,AppDelegate.h
和AppDelegate.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扩展文件中实现这个委托方法?
答案 0 :(得分:3)
你不能做那样的事情。 AppDelegate
定义了此方法(UIApplicationDelegate
协议说明了这一点)。
最简单的解决方案是在swift中重写AppDelegate
。
您还有更难的解决方案 - 从UIApplicationDelegate
中删除AppDelegate
并在您的扩展程序中实施此协议。如果AppDelegate
相当大,可能会引发意外错误。