22

Swift クラスに実装しようとしている Objective-C プロトコルがあります。例えば:

@class AnObjcClass;

@protocol ObjcProtocol <NSObject>
    - (void)somethingWithAnArgument:(AnObjcClass *)arg;
@end

次のようなSwiftクラスでそれに準拠しようとすると:

@objc class SwiftClass: NSObject, ObjcProtocol {
    // ...
}

次の恐ろしいコンパイラ エラーが発生します。

タイプ「SwiftClass」は、満たすことができない要件があるため、プロトコル「ObjcProtocol」に準拠できません。

これを解決するにはどうすればよいですか?

4

1 に答える 1

44

そのプロトコルによって参照されるすべてのクラスがブリッジング ヘッダーに含まれていることを確認します。

このエラーは、プロトコルで使用される型の 1 つ (プロトコル自体、戻り値の型、引数の型) が Swift ブリッジ ヘッダーに含まれていない場合に発生します。

Objective-C クラスは、@class AnObjcClass前方宣言があるため、このプロトコルを問題なく実装できますが、Swift クラスは、前方宣言のみのクラスを使用するプロトコルを実装できないようです。

于 2015-10-02T20:37:56.993 に答える