Cuando escribo el código de controlador de vista habitual, ¿puedo suponer que esto solo se invocará desde una única secuencia de bucle de evento? ¿Qué tipo de clases necesito para hacer thread-safe? ¿Cuáles son las situaciones habituales en las que están implicados varios hilos?¿Cuándo debo preocuparme por la seguridad de los subprocesos en una aplicación de iOS?
Respuesta
Si escribe el código UIViewController normal, no necesita preocuparse por la seguridad de los hilos en iOS. En iOS, cualquier mensaje sobre la IU debería ejecutarse en el hilo principal.
Si no realiza un mensaje de fondo solo, normalmente no tiene que preocuparse por el hilo, en la mayoría de las situaciones, siempre estará en el hilo principal.
P.S. Algunos Frameworks como Game Kit algunas veces interpretarán mensajes en segundo plano, pero no se trata de UI y el documento de Apple le advertirá que se asegure de que el mensaje se ejecute en el hilo principal.
El Concurrency Programming Guide puede ser útil.
El concurrency programming guide es bueno. Aquí hay algunas cosas muy importantes para tener en cuenta.
- Solo debe actualizar la IU desde el hilo principal. Esto puede atraparlo de maneras sutiles ...
- NSSe recibirán notificaciones en la secuencia desde la que se activan. Por lo tanto, si inicia un hilo y se suscribe a NSNotification para activar una acción UI, debe verificar en qué hilo se encuentra cuando lo obtiene. Si no está en el hilo principal, use el elemento de NSObject performSelectorOnMainThread: withObject: waitUntilDone: para ponerlo en el hilo principal.
- Si está haciendo un dibujo en un contexto no relacionado con la interfaz de usuario, creo que los gráficos centrales ya no tienen subprocesos. (Creo que CATiledLayer hace algunas cosas inteligentes por esto)
- Generalmente para los controladores de vista, el único bucle de evento que debe pensar es el del hilo principal. Piense dos veces antes de hacer su propio ciclo de eventos en otro hilo.
Solo para confirmar, Core Graphics es seguro para subprocesos y CATiledLayer hace todo lo que dibuja en varios subprocesos de fondo (solo un subproceso de fondo si tiene una CPU de núcleo único). –
- 1. ¿Debo preocuparme por la seguridad de subprocesos en ASP.NET con AJAX?
- 2. ¿Debo preocuparme por Process en foreach loop
- 3. ¿Cuándo debería preocuparme por std :: iostream :: centinela?
- 4. ¿Cuándo debo llamar a setNeedsDisplay en iOS?
- 5. Inicialización lenta de seguridad de subprocesos en iOS
- 6. Fuente oficial del paquete NuGet: ¿Debería preocuparme por la seguridad de los paquetes?
- 7. Asegurando seguridad de subprocesos
- 8. ¿Cuándo debo usar los hilos?
- 9. Seguridad de subprocesos en Javascript?
- 10. ¿Qué es una página en SQL Server y debo preocuparme?
- 11. Seguridad de subprocesos en la clase Java
- 12. ¿Debería preocuparme por los archivos comprimidos infectados?
- 13. Seguridad de subprocesos de SocketOutputStream
- 14. Como programador de ASP.NET, ¿debo preocuparme por los ataques de inyección de correo electrónico?
- 15. Seguridad de subprocesos Java de la lista
- 16. ¿Cuándo debo llamar a mainloop en una aplicación Tkinter?
- 17. Seguridad de subprocesos de log4net
- 18. Seguridad de subprocesos de WeakReference
- 19. Parallel.ForEach en la lista <Object> Seguridad de subprocesos
- 20. Java - Seguridad de subprocesos de los constructores de ArrayList
- 21. Seguridad de subprocesos de JTextArea.append
- 22. ¿Cuándo debo usar los botones de radio?
- 23. ¿Cuándo debo usar dispose() en los gráficos?
- 24. ¿Por qué debería preocuparme de Opera?
- 25. ¿Cuándo debo usar los procedimientos almacenados?
- 26. ¿Sincronizar NSMutableArray para seguridad de subprocesos?
- 27. Java: Bibliotecas Swing y seguridad de subprocesos
- 28. C++ Resumen de seguridad de subprocesos
- 29. Cuándo usar layoutSubview en iOS
- 30. Son métodos estáticos de seguridad de subprocesos
Algunos códigos de dibujo tienen múltiples subprocesos, como CATiledLayer cuando se ejecuta en una CPU multinúcleo. –