¿Cómo puedo saber mi solicitud de cacao para dejar de fumar desde dentro de la propia aplicación?

StackOverflow https://stackoverflow.com/questions/1659177

  •  11-09-2019
  •  | 
  •  

Pregunta

Estoy buscando una buena manera de decirle a mi aplicación Cocoa para dejar de fumar en sí. Tenga la seguridad de que esto no va a ser utilizado para el código de producción. Sólo estoy buscando una manera fácil de ejecutar una prueba y luego cerrar la aplicación durante la depuración.

He encontrado que exit(0); se cerrará la aplicación, pero que no pasa por todos los procedimientos normales de salida de la aplicación, y me gustaría mantener todos ellos en su lugar.

En esencia Quiero que las cosas funcionan como si un usuario tirado "Salir" en el menú, pero yo quiero que pase automáticamente después de que haya terminado con mi prueba.

Mi código actualmente se ve así:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif
¿Fue útil?

Solución

Se puede casi seguro de que su aplicación va a matar al menos una parte del tiempo. Por lo tanto, la defensa contra las salidas similares de exit(0); es requerida.

Sin embargo, NSApplication implementa el método -terminate:.

[NSApp terminate: nil]; debe hacer lo que quiera.

Me generalmente sugerir la publicación de ella a través -performSelector:afterDelay: con un retraso de 0,0 para forzarlo a ocurrir en la parte superior de la siguiente pasada a través del bucle de eventos.

Ejemplo:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top