2017-10-18 5 views
1

Swift 4にコードを変換しようとしていますが、必要に応じて@objcを追加しています。 Xcodeは自動的にそれらを修正するのにかなり良い仕事をしていますが、私はいくつかの方法(すべて同じ2つの方法を使用しています)で苦労しています.Xcodeは助けにならないので、ちょうど@objcをコードのどこかに置きます。インスタンスメソッドフォームの拡張のオーバーライドは、 '@objc'の廃止された推論に依存します

私のViewControllerクラスでは、このようなnavbarRightButtonAction(button:)というメソッドをオーバーライドしています。

Override of instance method 'navbarRightButtonAction(button:)' from extension of PBViewController depends on deprecated inference of '@objc' 

は、その後、私たちはこのようになりますPBViewControllerクラスでも問題を考えた::

extension PBViewController: PBNavigationBarDelegate { 
    func navbarRightButtonAction(button: PBAdaptiveButton) { 
     print("Override this method") 
    } 
} 

だから私は@objc func navbarRightButtonAction(button: PBAdaptiveButton)を追加し、私は警告が言っています場所です

class ViewController: PBViewController { 
    override func navbarRightButtonAction(button: PBAdaptiveButton) { 
     ... 
    } 
} 

それは助けにはならなかった。
それから私は私が@objc protocol PBNavigationBarDelegateを追加PBNavigationBarDelegateプロトコル

protocol PBNavigationBarDelegate { 
    func navbarRightButtonAction(button:PBAdaptiveButton) 
} 

に見えたが、それはどちらか助けていません。
廃止予定の警告を修正するために何をすべきか他には考えていません。

答えて

3

extensionの前で@objcまたは@nonobjcを置く:

@objc extension PBViewController: PBNavigationBarDelegate 

は、より多くの詳細については、スウィフトの進化でLimiting @objc Inference, SE-0160を見てみましょう。これは、拡張機能に関する次の例が含まれます。拡張内@objc推論を無効/有効に

エントリポイントがなければならないのどの全て(又はなし)のためのコードの特定の領域があるかもしれませんObjective-Cにさらされている。拡張子に@objcまたは@nonobjcを指定できます。 @objcまたは@nonobjcは、独自の@objcアノテーションまたは@nonobjcアノテーションを持たないその拡張のメンバーに適用されます。たとえば:

class SwiftClass { } 

@objc extension SwiftClass { 
    func foo() { }   // implicitly @objc 
    func bar() -> (Int, Int) // error: tuple type (Int, Int) not 
     // expressible in @objc. add @nonobjc or move this method to fix the issue 
} 

@objcMembers 
class MyClass : NSObject { 
    func wibble() { } // implicitly @objc 
} 

@nonobjc extension MyClass { 
    func wobble() { } // not @objc, despite @objcMembers 
} 
+0

おかげで、それが働きました。私もこれまでに試したことがあると思うが、今回は私のプロジェクト(cmd + shift + k)をきれいにしてから作業した。 – Codey

関連する問題