Chaque fois que j'essaye de télécharger un gros fichier derrière UIScrollView
, MPMapView
ou quelque chose du genre, le processus de téléchargement s'arrête dès que je touche l'écran de l'iPhone. Heureusement, un article de blog génial de Jörn suggère une option alternative, en utilisant NSRunLoopCommonModes
pour la connexion.
Cela me permet d'examiner en détail les deux modes, NSDefaultRunLoopMode et NSRunLoopCommonModes, mais le document Apple n'explique pas gentiment, à part dire
NSDefaultRunLoopMode
Le mode pour traiter les sources d'entrée autres que les objets NSConnection. C'est le mode de boucle d'exécution le plus couramment utilisé.
NSRunLoopCommonModes
Les objets ajoutés à une boucle d'exécution en utilisant cette valeur comme mode sont surveillés par tous les modes de boucle d'exécution qui ont été déclarés comme membre de l'ensemble des modes «communs»; voir la description de CFRunLoopAddCommonMode pour plus de détails.
CFRunLoopAddCommonMode
Les sources, les minuteries et les observateurs sont enregistrés dans un ou plusieurs modes de boucle d'exécution et ne s'exécutent que lorsque la boucle d'exécution s'exécute dans l'un de ces modes. Les modes communs sont un ensemble de modes de boucle d'exécution pour lesquels vous pouvez définir un ensemble de sources, de minuteries et d'observateurs partagés par ces modes. Au lieu d'enregistrer une source, par exemple, dans chaque mode de boucle d'exécution spécifique, vous pouvez l'enregistrer une fois dans le pseudo-mode commun de la boucle d'exécution et elle sera automatiquement enregistrée dans chaque mode de boucle d'exécution dans l'ensemble de modes communs. De même, lorsqu'un mode est ajouté à l'ensemble des modes communs, toutes les sources, minuteries ou observateurs déjà enregistrés dans le pseudo-mode commun sont ajoutés au mode commun nouvellement ajouté.
Quelqu'un peut-il expliquer les deux en langage humain?
la source
NSRunLoopCommonModes
autorise l'événement du minuteur lors du défilementUIScrollView
.NSDefaultRunLoopMode
empêcher la minuterie pendant le défilement.