Увеличение памяти из cellFromRowAtIndexPath в UITableView - PullRequest
0 голосов
/ 24 июля 2010

У меня есть UITableView с методом cellForRowAtIndexPath, который создает UITextView, а затем добавляет его в ячейку. Не было обнаружено утечек памяти, но при запуске Instruments (Object Allocations) сетевая память отправляется в одностороннем порядке до 18 МБ, где она падает.

Мое приложение постоянно добавляет и удаляет ячейки в источнике данных tableView, но поскольку TextView выпущен, я не вижу способа накопления памяти.

Вот мой cellForRowAtIndexPath код:

static NSString *cellIdentifier=@"Cell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];

if (cell==nil) {
    // Build cell
    cell=[[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier] autorelease];
}

cell.selectionStyle=UITableViewCellSelectionStyleNone;

UITextView *tv=[[UITextView alloc] initWithFrame:CGRectMake(0, 0, 320, 95)];
tv.font=[UIFont fontWithName:@"Helvetica-Bold" size:16];

tv.text=@"My Cell Text";

[cell addSubview:tv];
[tv release];

return cell;

Заранее спасибо!

1 Ответ

2 голосов
/ 24 июля 2010

Вы добавляете UITextView каждый раз при получении ячейки.Если он приходит из кеша, у него уже есть один в качестве подпредставления, поэтому теперь у него есть два из них, затем три, затем четыре ...

Так что добавьте их только в новые ячейки:

if (cell==nil) {
    // Build cell
    cell=[[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:cellIdentifier] autorelease];
    cell.selectionStyle=UITableViewCellSelectionStyleNone;

    UITextView *tv=[[UITextView alloc] initWithFrame:CGRectMake(0, 0, 320, 95)];
    tv.font=[UIFont fontWithName:@"Helvetica-Bold" size:16];
    tv.tag = 42; // Or whatever, if you don't want to use custom cells
    [cell addSubview:tv];
    [tv release];
}

UITextView *textView = (UITextView *) [cell viewWithTag:42];
textView.text=@"hi";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...