iPhone: Должен ли я (и как) освобождать подпредставления пользовательской ячейки табличного представления?

У меня есть пользовательские TableViewCell-ы, где я назначаю несколько UIImageView-ов и UILabel-ов для просмотра содержимого ячейки, например:

[cell.contentView addSubview:iconFileView];
[iconFileView release];
[cell.contentView addSubview:areaLabel];
[areaLabel release];
[cell.contentView addSubview:placeLabel];
[placeLabel release];

Как я понял сами ячейки сохраняются TableView и будут освобождаться вместе с ним. Однако я не понимаю, нужно ли мне удалять подпредставления содержимого ячейки из представления содержимого, чтобы их можно было освободить?

Если ответ да: как мне на самом деле это сделать? Достаточно ли найти все видимые ячейки и удалить их подвиды из каждой ячейки?

Ни один из них не смог найти точного ответа на этот вопрос в Руководстве по управлению памятью для Cocoa.

Спасибо!


person Arts    schedule 17.02.2010    source источник


Ответы (1)


ContentView позаботится об освобождении своих подвидов, когда ячейка освободит contentView. По сути, когда счетчик сохранения ячейки становится равным нулю, он отправляет сообщение об освобождении в contentView. Если счетчик сохранения contentView равен нулю, то он будет отправлять сообщения об освобождении всем своим подпредставлениям, включая iconFileView и т. д. Пока вы не отправили никаких дополнительных сообщений о сохранении в contentView или iconFileView и т. д., все должно быть в порядке.

Если вы хотите чувствовать себя действительно хорошо, запустите свою программу под Leaks in Instruments. Убедитесь, что вы делаете все необходимое для освобождения UITableViewCells.

person Rob Jones    schedule 17.02.2010