Моя предыдущая попытка ответа была неправильной, но при более внимательном рассмотрении проблемы я замечаю, что вы создаете идентификаторы своей ячейки с помощью +NSString stringWithFormat:
, которая возвращает автоматически освобожденную строку, которую вы не сохраняете:
aCellType = [NSString stringWithFormat:@"%d", AddCell];
aCell = (MyAddCell *)[iTableView dequeueReusableCellWithIdentifier:aCellType];
if (!aCell) {
aCell = [[[MyAddCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:aCellType] autorelease];
}
Если этот NSString будет освобожден до того, как вы его используете, то вы, вероятно, не получите обратно ячейку таблицы, которую ожидаете получить.Что произойдет, если вы retain
свой NSString и явно освободить его, когда вы закончите с этим?Вот так ...
aCellType = [[NSString stringWithFormat:@"%d", AddCell] retain];
aCell = (MyAddCell *)[iTableView dequeueReusableCellWithIdentifier:aCellType];
if (!aCell) {
aCell = [[[MyAddCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:aCellType] autorelease];
}
[aCellType release];