Как решить эту утечку памяти? - PullRequest
3 голосов
/ 05 мая 2011
+ (UITableViewCell *)inputCell {
    UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"id"];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;  
    cell.textLabel.font = [UIFont boldSystemFontOfSize:14];
    return cell;
}

Xcode показывает утечку памяти.Я попытался автоматически отключиться при инициализации ячейки и при возврате, но в обоих случаях приложение зависало.

Ответы [ 2 ]

1 голос
/ 05 мая 2011

Код, который вы опубликовали, будет пропускать память, потому что ваш alloc init возвратит ячейку с сохраненным счетчиком, равным единице. Предположительно, вызывающий код затем возвращает этот объект в cellForRowAtIndexPath , который присоединит его к UITableView и снова увеличит счет удержания (до двух). Поэтому, когда UITableView освобождает свою память, объект все равно будет иметь счетчик единиц хранения.

Если вы попытались автоматически высвободить объект в этом коде, и он вылетает, то у вас есть отдельная ошибка.

0 голосов
/ 05 мая 2011
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"id"] autorelease];

должно быть в порядке, если у вас нет проблем с кодом, с которого вы звоните -inputCell

...