4

多数の サブクラスがあり、「ログイン中」状態を処理するUIViewControllerという同じプロパティを共有する必要があります。session

session親クラスを使用できることはわかっていますが、これは非常に明示的であるため、共有プロトコルを介してプロパティを「強制」できるかどうか疑問に思っていました。

プロトコルで定義された明示的なプロパティを見たことがありません (明らかにセッターとゲッターを定義できます)。プロトコル内でプロパティを定義することは賢明なパターンですか?

4

4 に答える 4

10

@propertyプロトコルまたはカテゴリの宣言にも使用できます。

Appleの公式ドキュメントに記載されています。問題ありません。

于 2012-08-11T09:57:09.087 に答える
3

はい、プロトコルを使用してプロパティを追加できます。

@protocol MyProtocol <NSObject>

@property (nonatomic, retain) NSFoobar *baz;

@end

そして、このプロトコルを採用するすべてのクラスで (または、キーワード@synthesize baz;を使用して、宣言されたプロパティをオプションとしてマークできます)。@optional

于 2012-08-11T09:55:43.943 に答える
2

プロトコルに準拠するすべてのクラスが@synthesizeそのプロパティに対応するか、ゲッターとセッターを提供する場合は、プロトコルにプロパティを含めることができます。

于 2012-08-11T09:44:07.303 に答える
1

.h ファイル内:

 @property(nonatomic,strong)UILabel *mylabel;

.m ファイル内:

 @synthesize mylabel = _mylabel;

コンパイラは、mylabel のゲッターとセッターを作成します。

Ex -> 

-(void)setMylabe:(UILabel *) mylabel { //setter


}

-(UIlabel*)mylabel { // getter


}
于 2012-08-11T10:00:18.817 に答える