Comment puis-je accélérer un UITableView?

J'ai un UITableView avec environ 400 cellules dans 200 articles et c'est un peu lent dans la réponse à l'interaction utilisateur (défilement, la sélection de cellules.) J'ai assuré les méthodes de récupération des cellules d'en-tête et les vues de faire le strict minimum, comme c'est la course, et je ne pense pas que je suis en train de faire quelque chose hors de l'ordinaire pour le faire ralentir. Les cellules et les en-têtes juste une image d'arrière-plan et de texte. Quelqu'un d'autre a eu ce genre de problème, et connaissez-vous un moyen de le rendre un peu plus vite?

Edit: je suis en offrant une prime parce que j'aimerais obtenir quelques commentaires utiles sur ce. Je ne pas pense que la réponse réside dans un problème dans mon code. Au lieu de cela je suis à la recherche de stratégies de re-conception de la UITableView de sorte qu'il s'exécute plus rapidement. Je suis totalement ouvert à l'ajout d'un nouveau code et j'ai hâte d'entendre ce que vous les gars ont à dire.

Lenteur est observée sur les deux le simulateur et mon appareil, un iPhone 4. Voici mes implémentations de viewForHeaderInSection et cellForRowAtIndexPath, qui sont les seuls UITableViewDelegate les méthodes de mise en œuvre nontrivially. Je suis la réutilisation des cellules d'en-tête et points de vue.

- (UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger) section
{
    HaikuHeaderView* view= [m_sectionViews objectAtIndex:section];
    NSMutableArray* array= [m_haikuSearch objectAtIndex:section];
    Haiku* haiku= [array objectAtIndex:0];

    [view.poetLabel setText:[haiku nameForDisplay]];

    return view;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];

        cell.backgroundView= [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cell gradient2.png"]];

        //(Set up a bunch of label attributes in the cell...)
    }

    NSMutableArray* array= [m_haikuSearch objectAtIndex:indexPath.section];
    Haiku* haiku = [array objectAtIndex:indexPath.row];
    cell.textLabel.text = [haiku.m_lines objectAtIndex:0];

    return cell;
}
  • il serait utile si vous pouviez nous montrer comment vous avez mis en œuvre ces méthodes. Pas tout le code, mais juste de la logique de base
  • Quels sont les dispositifs que vous tester sur? Ou est la lenteur également observées sur votre Mac?
  • Voir ma réponse à cette question, je donne beaucoup de détails sur l'optimisation de votre code pour tableviews. HTH
  • Double Possible qui répond à votre question: Astuces pour améliorer iPhone UITableView les performances de défilement?
  • comment au sujet de la lecture de l'image une fois à partir d'un fichier n en utilisant cet objet au lieu de lire à partir d'un fichier de tous les temps.... [UIImage imageNamed:@"cellule gradient2.png"]];
InformationsquelleAutor Luke | 2011-05-30