オブジェクティブ C に基づいて OOP の基礎を強化しようとしています。説明が長すぎて申し訳ありません。私のアプリには、クラス A、クラス B、およびクラス C の目的の C クラスとして 3 つのクラスがあります。クラスBの実装にクラスAのプロパティがあります。つまり、クラスBのプライベートプロパティになります。
// implementation Class B
@interface ClassB ()
@property (nonatomic, strong) ClassA *classA;
@end
クラス C メソッドの 1 つでクラス B のインスタンスを作成し、クラス C のクラス B のインスタンスを介してクラス A のプロパティにアクセスしようとします。
// implementation Class C
@interface ClassC ()
@property (nonatomic, strong) ClassB *classB;
@end
@implementation ClassC
- (void)someMethod
{
NSString *string = [[NSString alloc] init];
classB = [[ClassB alloc] init];
string = classB.classA.displayString; //get an error here - ClassB doesn't have classA.
}
@end
エラーを回避するために、classA プロパティを実装から ClassB のヘッダーに移動しました。
// header Class B
@interface ClassB : NSObject
@property (nonatomic, strong) ClassA *classA;
@end
しかし、誰もがクラス B のインスタンスを作成し、classA プロパティにアクセスして、クラス A の一部であるプロパティを使用/変更できるのではないかと心配しています。
質問: classA プロパティをクラス B のヘッダー ファイルに移動して、クラス C で使用できるようにするのは良いスタイルですか?それとも、クラス A から必要なものを返すメソッドをクラス B で作成する必要がありますか? 何かのようなもの:
@implementation ClassB
- (NSString*)displayStringOfClassA
{
classA = [[ClassA alloc] init];
return self.classA.displayString;
}
@end