iPHONE: прокрутка TableView не гладкая - что может быть не так? - PullRequest
1 голос
/ 12 февраля 2011

У меня есть табличное представление, как показано.Он отображает различные европейские языки из базы данных.Когда я прокручиваю табличное представление, прокрутка не гладкая, и иногда она застревает на секунду или две.Что может быть не так?

Я декодирую языки, используя следующий код:

NSString *cellText = [[langArray objectAtIndex:i] valueForKey:[NSString stringWithFormat:@"%@",lblshortName.text]];

    if (cellText != (NSString *)[NSNull null] && ![cellText isEqualToString:@""] ) {
        NSString *decodedString3 = [NSString stringWithUTF8String:[cellText cStringUsingEncoding:[NSString defaultCStringEncoding]]];

        [cellTextArray addObject:[NSString stringWithFormat:@"%@ : %@",lblshortName.text, decodedString3]];
    }
    else {
        [cellTextArray addObject:@"<empty>"];
    }

enter image description here

Ответы [ 3 ]

2 голосов
/ 12 февраля 2011

Я бы предложил сделать несколько вещей ...

  1. Проверьте, не используете ли вы ячейку повторно, если вы затем перепроверяете, она работает путем установки счетчика для каждой новой ячейки.

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

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

0 голосов
/ 06 июня 2011

Я видел такое поведение, когда свойство .layer используется во многих местах, поэтому вы обращаетесь к свойству .layer подпредставления в ячейке таблицы или около того?

0 голосов
/ 12 февраля 2011

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

Что касается вашего кода, кажется, что весь cellTextArray создается перед представлением табличного представления, скажем, при инициализации источника данных табличного представления.Правильный?Предварительная сборка данных может быть полезна для производительности в целом, но если массив действительно очень большой, поэтому вызывает проблемы с памятью, возможно, вы захотите построить текст динамически.

Скорее, однако, ясначала проверил бы следующее:

  1. Повторно ли используется свойство ячеек табличного представления?
  2. Являются ли подпредставления в ячейке табличного представления непрозрачными?
  3. Разве ячейки табличного представления не рисуют всю область каждый раз?
  4. Разве вы не вызываете drawRectметод напрямую?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...