2 番目のプロトコル (ProtocolB) に準拠する単一のプロパティを含むプロトコル (ProtocolA) があります。
public protocol ProtocolA {
var prop: ProtocolB? { get }
}
public protocol ProtocolB {
}
それらを実装する2つのクラスを宣言しようとしています:
private class ClassA : ProtocolA {
var prop: ClassB?
}
private class ClassB : ProtocolB {
}
しかし、私はエラーが発生します:
タイプ「ClassA」はプロトコル「ProtocolA」に準拠していません
プロトコルには、タイプ「ProtocolB?」のプロパティ「prop」が必要です
候補に一致しないタイプ 'ClassB?' があります。
ClassBがProtocolBに準拠しているため、これは面倒です。
古き良き私はおそらくプロパティを次のように宣言します:
@property (nonatomic) ClassB <ProtocolB> *prop;
しかし、これを迅速に回避できると思われる唯一の方法は、次のような ivar を追加することです。
private class ClassA : ProtocolA {
var _prop: ClassB?
var prop: ProtocolB? { return _prop }
}
これを回避する方法はありませんか?