我在School
類具有可變mTeacher
一個實例:分配一個實例變量本身
@interface School : NSObject {
Teacher *mTeacher;
}
@end
在實現文件中,我有方法- (Teacher *)getTeacher
這應該返回任何現有的教師來說,如果有一個或創建一個並返回它:
- (Teacher *)getTeacher {
if (mTeacher != nil) {
return mTeacher;
}
return [[Teacher alloc] init];
}
可能有其他多個實例的方法調用此方法來獲取Teacher
實例&分配到mTeacher
實例變量:
- (void)methodOne {
mTeacher = [self getTeacher];
...
}
- (void)methodTwo {
mTeacher = [self getTeacher];
...
}
所以,如果分配的方法之一已經是Teacher
一個實例mTeacher
,呼籲[self getTeacher]
當其他方法最終會與mTeacher = mTeacher
下(因爲- (Teacher *)getTeacher
方法只是在這種情況下返回mTeacher
) 。我的問題是,在Objective-C中很好嗎?我的getTeacher
方法有任何潛在的問題?
您正在實施Singleton設計模式。這裏的另一個相關的帖子應該有所幫助:http://stackoverflow.com/questions/145154/what-should-my-objective-c-singleton-look-like –
我沒有看到任何技術上的錯誤,但爲什麼不只是初始化一個'init'方法中的變量並在需要的地方使用它,而不是試圖多次設置? (在風格上:與Objective-C相比,將教師作爲一個屬性而不是一個顯式變量更符合我的想法,然後,再加上我對'init'的建議,「getter」會從你的代碼中消失。) –
如果'mTeacher'永遠不是'nil',爲什麼不用''''init'方法初始化它呢?另外,你應該檢查出[Objective-c中的屬性](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/EncapsulatingData/EncapsulatingData.html) – Sudo