我仍然對內存管理的一些微妙方面感到不安,我有一個關於我在某些示例代碼中看到的積極保留/釋放的問題。具體做法是:iPhone內存管理問題:保留迭代的UITableViewCells?
- (void)loadContentForVisibleCells
{
NSArray *cells = [self.tableView visibleCells];
[cells retain];
for (int i = 0; i < [cells count]; i++)
{
// Go through each cell in the array and call its loadContent method if it responds to it.
FlickrCell *flickrCell = (FlickrCell *)[[cells objectAtIndex: i] retain];
[flickrCell loadImage];
[flickrCell release];
flickrCell = nil;
}
[cells release];
}
爲什麼[保留/釋放]關於FlickrCell(線8 & 10)週期?單元格在NSArray中,根據定義,它保留了其內容(我認爲...?),並保留了NSArray本身。爲什麼這些額外的保留是必要的?
此外,爲什麼保留在[self.tableView visibleCells](第3行)返回的NSArray上?在這個方法調用期間,數組是否保證不在?
非常感謝。
好的,謝謝。我覺得我對內存管理有相當的瞭解,但是當我看到這樣的代碼時,我開始懷疑。 – 2009-12-11 22:05:56