Элементы UITableView кэшируются - PullRequest
       1

Элементы UITableView кэшируются

1 голос
/ 16 сентября 2011

У меня есть UITableView с 1000 элементами. Перед его первой загрузкой Instruments показывает 2.20MB байтов, которые еще живы. После зарядки показывает 4.82MB. Когда я освобождаю память и возвращаюсь в предыдущее состояние, отображается 4,71 МБ. Но теперь, когда я загружаю ту же таблицу, Instruments снова показывает 4.82MB. Структура UITableView хранится в кэше? Если да, есть ли способ освободить эту память?

Конструкция моего стола:

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *MyIdentifier = @"SearchResult";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault   reuseIdentifier:MyIdentifier] autorelease];
    } 

    if(!isSomeStateSearching) cell.textLabel.text = [[[contentSomeState objectAtIndex:indexPath.section] objectForKey:@"rowValues"] objectAtIndex:indexPath.row];
    else
    {
        cell.textLabel.text = [searchedAllContent objectAtIndex:indexPath.row];
    }

    UIView *v = [[[UIView alloc] init] autorelease];
    v.backgroundColor = [UIColor colorWithRed:188/255.0 green:57/255.0 blue:25/255.0    alpha:1.0];
    cell.selectedBackgroundView = v;

    UIImageView *arrow = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"seta_navegacao"]] autorelease];
    cell.accessoryView = arrow;

    return cell;
}

Ответы [ 2 ]

0 голосов
/ 16 сентября 2011

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

0 голосов
/ 16 сентября 2011

Конечно, вы правильно используете механизм повторного использования UITableViewCell, верно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...