У меня есть экземпляр переменной mTeacher
в моем School
классе:Назначить переменную экземпляра к себе
@interface School : NSObject {
Teacher *mTeacher;
}
@end
В файле реализации, у меня есть метод - (Teacher *)getTeacher
который, как предполагается вернуть либо существующий экземпляр учителя, если есть один или создать и вернуть его:
- (Teacher *)getTeacher {
if (mTeacher != nil) {
return mTeacher;
}
return [[Teacher alloc] init];
}
Там может быть несколько других методов экземпляра, вызывающие этот метод, чтобы получить Teacher
экземпляр & присваиваемоеПеременнаяэкземпляра:
- (void)methodOne {
mTeacher = [self getTeacher];
...
}
- (void)methodTwo {
mTeacher = [self getTeacher];
...
}
Таким образом, если один из метода назначен уже экземпляр Teacher
к mTeacher
, другой метод при вызове [self getTeacher]
бы в конечном итоге с mTeacher = mTeacher
под (потому что - (Teacher *)getTeacher
метод просто возвращает mTeacher
в данном случае) , Мой вопрос в том, хорошо ли в объективе-C? Любые потенциальные проблемы с моим методом getTeacher
?
Вы внедряете шаблон дизайна Singleton. Вот еще один связанный пост по теме, который должен помочь: http://stackoverflow.com/questions/145154/what-should-my-objective-c-singleton-look-like –
Я не вижу в этом ничего технически неправильно, но почему бы просто не инициализировать переменную один раз в методе 'init' и использовать ее там, где это необходимо, а не пытаться установить ее несколько раз? (В стиле: было бы больше соответствовать Objective-C, чтобы сделать «учителем» свойство, а не явную переменную. Затем, вместе с моим предложением о 'init',« getter »исчезнет из вашего кода.) –
Если 'mTeacher' никогда не' nil', почему бы вам не инициализировать его в методе 'init'' School'? Кроме того, вы должны проверить это [Свойства в Objective-c] (https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html) – Sudo