多数の サブクラスがあり、「ログイン中」状態を処理するUIViewController
という同じプロパティを共有する必要があります。session
session
親クラスを使用できることはわかっていますが、これは非常に明示的であるため、共有プロトコルを介してプロパティを「強制」できるかどうか疑問に思っていました。
プロトコルで定義された明示的なプロパティを見たことがありません (明らかにセッターとゲッターを定義できます)。プロトコル内でプロパティを定義することは賢明なパターンですか?
多数の サブクラスがあり、「ログイン中」状態を処理するUIViewController
という同じプロパティを共有する必要があります。session
session
親クラスを使用できることはわかっていますが、これは非常に明示的であるため、共有プロトコルを介してプロパティを「強制」できるかどうか疑問に思っていました。
プロトコルで定義された明示的なプロパティを見たことがありません (明らかにセッターとゲッターを定義できます)。プロトコル内でプロパティを定義することは賢明なパターンですか?
@property
プロトコルまたはカテゴリの宣言にも使用できます。
Appleの公式ドキュメントに記載されています。問題ありません。
はい、プロトコルを使用してプロパティを追加できます。
@protocol MyProtocol <NSObject>
@property (nonatomic, retain) NSFoobar *baz;
@end
そして、このプロトコルを採用するすべてのクラスで (または、キーワード@synthesize baz;
を使用して、宣言されたプロパティをオプションとしてマークできます)。@optional
プロトコルに準拠するすべてのクラスが@synthesize
そのプロパティに対応するか、ゲッターとセッターを提供する場合は、プロトコルにプロパティを含めることができます。
.h ファイル内:
@property(nonatomic,strong)UILabel *mylabel;
.m ファイル内:
@synthesize mylabel = _mylabel;
コンパイラは、mylabel のゲッターとセッターを作成します。
Ex ->
-(void)setMylabe:(UILabel *) mylabel { //setter
}
-(UIlabel*)mylabel { // getter
}