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?

StackOverflow https://stackoverflow.com/questions/843220

Question

Je vais faire des choses sophistiquées dans les méthodes du délégué lors du défilement. Je vais également implémenter le préchargement dynamique du contenu, de sorte qu'il soit théoriquement possible de faire défiler quelques centaines de milliers d'images. Mais je crains que, chaque fois que je fais l'action de préchargement pour le prochain gros bloc dans le sens du défilement, le délégué attende que la source de données fournisse les données et que l'affichage de défilement complet soit gelé pour l'instant.

Le problème est que je dois toujours accéder aux sous-vues de la vue de défilement. Je suis nouveau sur la plate-forme et je ne sais pas si j'aurais toujours un accès lorsque j'ouvrirai un autre thread pour ces actions de préchargement? Ou bien le scrollview n’attendrait-il pas que le délégué s’acquitte de sa tâche?

Je suis en phase de planification, je n'ai donc pas implémenté beaucoup de jets.

Était-ce utile?

La solution

Vous ne pouvez utiliser que des classes d'interface utilisateur à partir du thread principal. Vous devez donc calculer le plus possible dans un fil d’arrière-plan (je pense que vous pouvez également charger vos images dans un fil d’arrière-plan), puis utiliser performSelectorOnMainThread:withObject:waitUntilDone: pour manipuler les classes de l’UI sur le fil principal.

Voir Comment mettre à jour l'interface utilisateur au milieu de ce fil? pour une autre instance de votre question

Autres conseils

Je n'ai pas de réponse spécifique à votre question. Je veux juste m'assurer que vous connaissez la limite de RAM d'environ 25 Mo pour votre application. Je ne peux pas donner de liens là-dessus, car même si Apple connaît la limite, ils ne le disent pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top