我很好奇,如果我在這裏使用的代碼是這樣做的好方法。基本上我是通過從我的ViewController中實例化來創建一個簡單的模型對象(在MVC中)。這個想法是,我第一次打電話[[self dataModel] doSomething];
它創建一個新的(或重新使用一個現有的)對象。我特別關心設置屬性和正確釋放本地分配,任何意見將不勝感激。分配/保留模型(mvc)?
// INTERFACE
DataModel *dataModel;
@property(nonatomic, retain) DataModel *dataModel;
// IMPLEMENTATION
@synthesize dataModel;
// Lazy Instanciation ...
- (DataModel *)model {
if(!dataModel) {
DataModel *tempDataModel = [[DataModel alloc] init];
[self setDataModel:tempDataModel;
[tempDataModel release];
}
return dataModel;
}
// Clean up
- (void)dealloc {
[dataModel release];
[super dealloc];
}
OR:(雖然我真的不喜歡這個,因爲它看起來混亂我)
// Lazy Instanciation ...
- (DataModel *)model {
if(!dataModel) {
[self setDataModel:[[DataModel alloc] init]];
[dataModel release];
}
return dataModel;
}
加里。
嗨,如果可能的話我一直在努力(作爲一個經驗法則),以避免使用自動釋放。但我可以看到你的觀點,它確實使這個方法變得簡單多了,再加上只會有一個,所以任何開銷都是最小的。非常感激。 – fuzzygoat 2010-11-19 18:41:28
'release'比'autorelease'更好,因爲它更有可能更快地釋放內存。但根據我的經驗,'autorelease'可以減少錯誤,並且可以防止很多超級用戶很難調試與內存管理問題相關的痛苦。這是因爲你可以在同一個地方平衡init和release權限,並且很容易判斷它是否不平衡。只要你的對象不是龐大的數據包,'autorelease'不會引起太多的開銷。 – 2010-11-19 18:47:48