2010-03-18 5 views
1

J'ai une question sur la meilleure approche de la performance ...image disque iPhone chargement tableView (application photo comme)

  1. Fondamentalement j'ai un UITableView, avec des cellules et 4 images dans la cellule. (L'aperçu de vignette d'application photo similaire); 24 images vues ...

  2. Les images des cellules sont chargées de manière asynchrone à partir de l'adresse URL et lorsqu'elles sont téléchargées, elles sont enregistrées dans le répertoire Documents de l'iPhone.

Je voudrais avoir les mêmes performances que l'application photo a lors du défilement des vignettes, mais j'obtenir un léger mouvement de table saccadée ...

Que recommanderiez-vous comme meilleure approche pour utiliser le déjà chargé images pour présenter à partir du disque et de maintenir la table défilement couramment ...

ce que vous pensez:

  1. Faire NSOperation qui charge le pouce du disque (4 opérations simultanées); 1 opération par image ...

  2. Faire NSOperation qui va charger 4,8,16? images à la mémoire en boucle;

  3. Autre meilleure approche?

Merci

Répondre

1

Avant d'investir trop de temps, vous devriez vérifier le cadre Three20 iPhone. Il fournit un contrôleur de vue qui reproduit le sélecteur d'image de photo de très près:

http://three20.info/overview

Si vous décidez de ne pas utiliser Three20, vous devez au moins vous assurer que vos charges de solution et décharge les images de manière asynchrone; De cette façon, votre interface de table ne sera pas agitée, quelle que soit la durée de lecture du disque. Si vous utilisez UIImageViews et utilisez +[UIImage imageWithContentsOfFile:] pour obtenir UIImages, UIKit s'occupera du reste pour vous.

Vous devriez également envisager de stocker des images miniatures distinctes le long des images en taille réelle pour les besoins de cette vue. Cela vous permettra d'économiser du temps et de la mémoire, et c'est précisément ce que fait l'application Photo. Si vous faites un ou plusieurs de ce qui précède, je doute que les lectures de disque seront un goulot d'étranglement pour vous!