iPhone: пользовательский UITableViewCell с Интерфейсным Разработчиком -> как освободить объекты ячейки? - PullRequest
1 голос
/ 28 апреля 2010

Официальная документация говорит мне, что я должен сделать эти 3 вещи, чтобы правильно управлять своей памятью для "объектов nib".

@property (nonatomic, retain) IBOutlet UIUserInterfaceElementClass *anOutlet;

"Затем вы должны либо синтезировать соответствующие методы доступа, либо реализовать их в соответствии с объявлением, и (в iPhone OS) освободить соответствующую переменную в dealloc."

- (void)viewDidUnload {
    self.anOutlet = nil;
    [super viewDidUnload];
}

Это имеет смысл для нормального представления. Однако, как мне это сделать для UITableView с пользовательским UITableViewCells, загруженным через .nib-файл?

Там IBOutlets находится в MyCustomCell.h (унаследованном от UITableViewCell), но это не то место, где я загружаю перо и применяю его к экземплярам ячейки, потому что это происходит в MyTableView.m

Итак, я все еще выпускаю IBOutlets в dealloc MyCustomCell.m или мне нужно что-то делать в MyTableView.m?

Также MyCustomCell.m не имеет - (void)viewDidUnload {}, где я могу установить свой IBOutlets на ноль, в то время как мой MyTableView.m имеет.

1 Ответ

2 голосов
/ 29 апреля 2010

Ваши IBOutlets свойства клетки? Если это так, то освободите их в методе dealloc MyCustomCell.

Убедитесь, что вы следуете указаниям для tableViews и вызываете dequeueReusableCellWithIdentifier: в tableview: cellForRowAtIndex. TableView освободит ваши пользовательские ячейки, когда они больше не нужны. Предполагая, что у вас нет никаких других ссылок на ваши ячейки (вы не должны), тогда dealloc будет вызываться для ячейки, удаленной из tableView.

...