快速問題:我使用了大量的NSObject派生類,並且想知道如何正確地清理可能擁有其他類的實例的類屬性(在下面的代碼片段中是一個自定義類實例的數組)。下面的new
和finalize
的用法是否正確?自動引用計數並完成
我的理解是,new
是一種方便的方法,既調用alloc和init,又在dealloc
之前調用finalize
- 至少這是我從閱讀文檔中收集到的內容。我有這個權利嗎?
感謝您的任何提示/最佳做法等!
- (id)new {
waffleArray = [[NSMutableArray alloc] initWithCapacity:kCellCount];
for (int i = 0; i < kCellCount; i++) {
WaffleCell * cell = [WaffleCell new];
[waffleArray addObject:cell];
}
return self;
}
// clean up
- (void)finalize {
[waffleArray removeAllObjects];
waffleArray = nil;
[super finalize];
}
好的 - 謝謝。我不認爲我理解類和實例方法之間的區別 - 將不得不閱讀。 – 2012-02-07 13:40:16
可以將類方法看作與其他語言(如Java和C++)中的靜態方法類似。在這種情況下沒有「自我」,在方法簽名的開始處用'+'表示,而不是用「-'。 – mattjgalloway 2012-02-07 13:44:07
另外,要明確:ARC不是垃圾收集,在任何情況下都不會調用-finalize。 – 2012-02-07 17:54:33