Cada vez que intento descargar un archivo grande detrás UIScrollView
, MPMapView
o algo así, el proceso de descarga se detiene tan pronto como toco la pantalla del iPhone. Afortunadamente, una publicación de blog increíble de Jörn sugiere una opción alternativa, usar NSRunLoopCommonModes
para la conexión.
Eso me hace ver en detalle los dos modos, NSDefaultRunLoopMode y NSRunLoopCommonModes, pero el documento de Apple no explica amablemente, aparte de decir
NSDefaultRunLoopMode
El modo para tratar con fuentes de entrada distintas de los objetos NSConnection. Este es el modo de ciclo de ejecución más utilizado.
NSRunLoopCommonModes
Los objetos agregados a un ciclo de ejecución utilizando este valor como modo son monitoreados por todos los modos de ciclo de ejecución que han sido declarados como miembros del conjunto de modos "comunes"; consulte la descripción de CFRunLoopAddCommonMode para obtener más detalles.
CFRunLoopAddCommonMode
Las fuentes, temporizadores y observadores se registran en uno o más modos de ciclo de ejecución y solo se ejecutan cuando el ciclo de ejecución se ejecuta en uno de esos modos. Los modos comunes son un conjunto de modos de ciclo de ejecución para los que puede definir un conjunto de fuentes, temporizadores y observadores que comparten estos modos. En lugar de registrar una fuente, por ejemplo, en cada modo de ciclo de ejecución específico, puede registrarla una vez en el pseudomodo común del ciclo de ejecución y se registrará automáticamente en cada modo de ciclo de ejecución en el conjunto de modos comunes. Del mismo modo, cuando se agrega un modo al conjunto de modos comunes, cualquier fuente, temporizador u observador ya registrado en el pseudomodo común se agrega al modo común recién agregado.
¿Alguien puede explicar los dos en lenguaje humano?
fuente
NSRunLoopCommonModes
permite un evento de temporizador mientras me desplazoUIScrollView
.NSDefaultRunLoopMode
evitar el temporizador mientras se desplaza.