Pregunta

Esto es sólo una pregunta teórica.Nació a partir de un problema real en mi aplicación, pero me re-diseñado el problema de la aplicación.Pero la pregunta sigue siendo:

Si en mi aplicación delegado escribo mi objeto singleton a disco en applicationWillTerminate: pero también el uso de NSNotificationCenter para llamar updateSingletonData en UIApplicationWillTerminateNotification en algunos controlador de vista, que pasará primero?¿Mis datos se escriben en el singleton, entonces el singleton se escriben en el disco, a continuación, la aplicación termina?O será que la inversa de suceder, con el singleton de la serialización y entonces el singleton actualizado (peor), o la aplicación acaba de terminar después de una cierta cantidad de tiempo si la serialización toma demasiado tiempo (mucho peor!)?

Supongo que esto demuestra mi falta de entendimiento de las entrañas de Trampolín...gracias a cualquiera que pueda arrojar algo de luz aquí.

¿Fue útil?

Solución

Un par de cosas a tener en cuenta aquí:

  1. Solo Apple sabe el orden en que sucederán, ya que escribieron el código que lo hace.

  2. No debe preocuparse por el pedido en el que sucederán. Si le importa, entonces ha diseñado su código mal.

En realidad, puede ir y verificar en qué pedido ocurre: para su dispositivo en particular, para su versión de iOS en particular, etc.

Pero realmente, no debería importarle en qué orden se encuentran. Por los sonidos de la misma, debería estar disparando al controlador de vista para escribir los datos antes de guardar applicationWillTerminate:, o dejar que el controlador de vista maneje el guardar después de que haya escrito sus datos.

Otros consejos

Esta pregunta es de la vieja y la respuesta de @mattjgalloway es correcta en términos de la calidad del código, pero, por el bien del conocimiento, la he visto en la documentación que la notificación se publica después de el UIApplicationDelegate el método se llama (el énfasis es mío):

Después de llamar a este método, la aplicación también envía un UIApplicationWillTerminate notificación de brindar a los objetos de una oportunidad para responder a la transición.

https://developer.apple.com/reference/uikit/uiapplicationdelegate/1623111-applicationwillterminate

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top