2009-05-09 3 views
1

Je vais faire des choses sophistiquées dans les méthodes du délégué pendant le défilement. Je vais également implémenter le préchargement dynamique des contenus, de sorte qu'il est théoriquement possible de faire défiler quelques milliers d'images. Mais je crains que chaque fois que je fais l'action de préchargement pour le prochain gros morceau dans la direction de défilement, le délégué attendra que la source de données fournisse les données, et toute la vue de défilement sera gelée pour ce moment.Dois-je exécuter le délégué d'un UIScrollView dans un autre thread pour éviter les problèmes de performances lors du défilement?

Le problème est que j'ai toujours besoin d'accéder aux sous-vues de la vue déroulante. Je suis nouveau à la plate-forme et je ne sais pas si j'aurais toujours accès quand j'ouvre un autre fil pour ces actions de préchargement? Ou le scrollview n'attendrait-il pas que le délégué fasse avancer les choses? Je suis dans la phase de rabotage, donc je n'ai pas mis en œuvre beaucoup de jet.

Répondre

3

Vous ne pouvez utiliser que des classes d'interface utilisateur du thread principal. Donc, ce que vous devriez faire est de calculer autant que possible dans un thread d'arrière-plan (je crois que vous pouvez charger vos images dans un thread d'arrière-plan), puis utilisez performSelectorOnMainThread:withObject:waitUntilDone: pour manipuler les classes d'interface utilisateur sur le thread principal.

Voir How do I update the UI in the middle of this thread? pour l'autre instance de votre question

1

Je n'ai pas de réponse spécifique à votre question spécifique. Je veux juste m'assurer que vous êtes au courant de la limite de ~ 25 Mo de RAM pour votre application. Je ne peux pas donner de liens à ce sujet, car même si Apple connaît la limite, ils ne le disent pas.

+0

Je sais que sur cette limite de mémoire. C'est pourquoi je ne charge que la partie visible + une partie tampon pendant le défilement. Lorsque l'utilisateur fait défiler vers le bas, je libère des objets du haut, mais je recycle les vues. Analogique à cela, pour faire défiler vers le haut. – Thanks

+0

Apple ne connaît pas la limite. Cela dépend de ce que d'autres applications exécutent-iPod, par exemple-et probablement de la façon dont la RAM du système est fragmentée. Il n'y a pas de limite supérieure "dure"; s'il y avait nous pourrions juste expérimenter et comprendre. –

Questions connexes