自体にインスタンス変数に割り当て:実装ファイルで私は<code>School</code>クラスに<code>mTeacher</code>変数インスタンスを持つ
@interface School : NSObject {
Teacher *mTeacher;
}
@end
を、私は1つまたはがある場合は、既存の教師のインスタンスのいずれかを返すことになっている方法- (Teacher *)getTeacher
を持っています1を作成し、それを返す:
- (Teacher *)getTeacher {
if (mTeacher != nil) {
return mTeacher;
}
return [[Teacher alloc] init];
}
にTeacher
インスタンス&割り当てを取得するには、このメソッドを呼び出して、他の複数のインスタンスメソッドがあるかもしれませんインスタンス変数:だから
- (void)methodOne {
mTeacher = [self getTeacher];
...
}
- (void)methodTwo {
mTeacher = [self getTeacher];
...
}
、(- (Teacher *)getTeacher
方法は、単に、この場合mTeacher
を返すため)mTeacher
に既にTeacher
のインスタンスを割り当て方法のいずれか、他の方法[self getTeacher]
を呼び出す下mTeacher = mTeacher
で終わるかどう。私の質問は、それは客観的なCでうまくいくのですか?私のgetTeacher
メソッドの潜在的な問題?
シングルトンデザインパターンを実装しています。ここでは、助けてくださいトピックに関する別の関連する投稿があります:http://stackoverflow.com/questions/145154/what-should-my-objective-c-singleton-look-like –
私はそれに技術的に何か間違って表示されませんが、 'init'メソッドで変数を一度初期化し、それを複数回設定するのではなく、必要なところで使うのはなぜですか? (スタイルに関しては、Objective-Cで明示的変数ではなく 'teacher'をプロパティにすることが多くなります。その後、' init'についての提案と一緒に、あなたのコードから「getter」が消えます) –
'mTeacher'が決して' nil'でない場合、 'School'の' init'メソッドで初期化してみませんか?また、これをチェックする必要があります[Objective-cのプロパティ](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html) – Sudo