He escrito una pequeña definen llamada ensureInMainThread (y lo uso un poco). Sin embargo, no estoy seguro exactamente qué métodos de interfaz de usuario requieren siendo llamados en el hilo principal. ¿Qué hay de setNeedsDisplay
y setNeedsLayout
? ¿Cuál es la regla de oro para los métodos que deben invocarse en el hilo principal en iOS 5.x?¿Qué necesita estar en el hilo principal?
Estas preguntas están relacionadas (algunas preguntas de baja calidad y respuestas, y algunos muy caso específico), pero me gustaría una solución amplia, única buena respuesta:
- UIView setNeedsDisplay Not on main thread?
- Does UIView's -drawRect: have to be called on the main thread?
- Make UIImage From UIView but NOT in the main thread
Bravo, como siempre +1, gracias Brad Larson. Esta es la respuesta que estaba buscando (sin haber podido imaginarlo). ¿Podría comentar sobre 'setNeedsDisplay' y' setNeedsLayout', y si puede ajustar una cadena en un 'UILabel' con seguridad desde otro hilo? –
@Yar - Creo que '-setNeedsDisplay' es seguro, debido a las protecciones en torno a dibujar en un contexto, pero no estoy seguro de' -setNeedsLayout'. Creo que esto último puede no ser seguro, porque no se trata de dibujar, sino de posicionar vistas y capas. Creo que el dibujo de texto de UILabel debería ser seguro, pero no lo he probado yo mismo. –