(простите за мой английский :-)
Я загружаю пользовательский UITableViewCell:
static NSString *CellIdentifier = @"ReminderCell";
ReminderCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSLog(@"Alloco nuova cella");
NSArray *objectsInNib = [[NSBundle mainBundle] loadNibNamed:@"ReminderCell" owner:nil options:nil];
for(id currentObject in objectsInNib)
{
if([currentObject isKindOfClass:[ReminderCell class]])
{
cell = (ReminderCell *)currentObject;
break;
}
}
} //fine caricamento cella dal Nib
return cell;
Я устанавливаю владельца равным nil, потому что у меня есть .m и .h для этой ячейки, и я хочу иметь выход в своих собственных файлах, а не в UITableViewController. Работает нормально.
Мой вопрос касается правильного управления памятью в этой ситуации.
Я понимаю, что loadNibNamed возвращает автоматически выпущенный массив.
Более того, я понимаю, что пул авто-выпуска сливается в конце токовой петли.
По этой причине не нужно сохранять свою пользовательскую ячейку перед ее возвратом.
Но я много раз слышал, что вы должны предполагать, что автоматически выпущенный объект гарантированно будет существовать только до конца метода, куда был отправлен автоматический выпуск.
Предполагая это, я должен немедленно сохранить ячейку и затем автоматически выпустить ее:
cell = [[(ReminderCell *)currentObject] retain];
//code...
[cell autorelease];
return cell;
Это правильно, или я не должен беспокоиться об этом?
Спасибо