プロトコルで宣言されたプロパティについていくつか質問があります。
戻り型の差異
@protocol IHaveProperties
@required
@property (nonatomic, strong) IAmOfTypeX *propertyOfProtocolType;
@property (nonatomic, strong) NSArray *array;
@end
@interface ClassThatHasProperties : NSObject<IHaveProperties>
@property (nonatomic, strong) ImplementationOfTypeX *propertyOfProtocolType;
@property (nonatomic, strong) NSMutableArray *array;
@end
さて、プロトコル/クラスの組み合わせでこれを試してみましたが、残念ながらコンパイルされました。
それはどのように機能しますか?これは技術的にインターフェースに準拠していませんか?
プロパティ宣言修飾子
@protocol IHaveProperty
@required
@property (nonatomic, strong, readonly) *example;
@end
@interface HaveProperty : NSObject<IHaveProperty>
@property (nonatomic, strong, readonly) *example;
@end
私の Mac は今再起動しているので、これを試すことはできませんが、プロトコル宣言にはそれを裏付けるものがないため、これで問題ないと思います。すべての修飾子が呼び出し元にとって重要なわけではなく、プロトコルを実装するクラスにとってのみ重要です。