(извините за мой английский :-) Я загружаю пользовательский 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;
Это правильно или мне не стоит об этом беспокоиться? Спасибо