1

私のプロジェクトはObj-CとSwiftが混在しており、SwiftでAppDelegateクラスを拡張しようとしています。Swift拡張機能を使用してデリゲートメソッドを実装するには

今私はAppDelegate.m,AppDelegate.hおよびAppDelegate.swiftです。それは文句だが

extension AppDelegate { 

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

    } 
} 

:メソッドのほとんどは、OBJの-Cファイル内にあるが、私はただのいずれかの方法を実装しようとしている

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拡張ファイルにこのデリゲートメソッドを実装する方法はありますか?

+0

既存のメソッドをオーバーライドする場合は、拡張子を書く代わりにサブクラス化する必要があります – Daniel

+0

@simpleBobこれは既存のメソッドではありません。私はObj-Cクラスで実装していません。 –

答えて

2

あなたはそのようなことはできません。 AppDelegateはこのメソッドを定義しています(UIApplicationDelegateプロトコルではそうです)。

最も簡単な解決策は、迅速にAppDelegateを書き換えることです。

さらに難しい解決方法があります - AppDelegateからUIApplicationDelegateを削除して、このプロトコルを自分の内線で実装してください。 AppDelegateが相当なサイズの場合、予期しないエラーが発生する可能性があります。

+0

これは、代わりに実装される必要がある 'TableViewDelegate'メソッドを持つView Controllerだとしましょう。 View Controllerを拡張して代わりにそれらのメソッドを実装することはできますか?もしそうなら、そのシナリオではどのように動作しますか? (P.S.私のアプリケーションデリゲートはそれほど大きくないので、Swiftで書き直すのは大したことではありません) –

+0

'SomeViewController'( 'UIViewController'のサブクラス)とこのVCの拡張モジュール 'UITableViewDelegate'があればうまく動作します。 'SomeViewController'(' UIViewController'のサブクラス)と 'UITableViewController'プロトコルを作成して、拡張で記述されたメソッドで' SomeViewController'の拡張を作成すると失敗します。 –

関連する問題