Come posso dire la mia applicazione Cocoa per uscire dall'interno dell'applicazione stessa?

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

  •  11-09-2019
  •  | 
  •  

Domanda

Sto cercando un buon modo di raccontare la mia applicazione Cocoa per uscire sé. Certi che questo non verrà utilizzato per il codice di produzione. Sto solo cercando un modo semplice per eseguire un test e quindi chiudere l'applicazione durante il debug.

Ho trovato che exit(0); chiuderà l'applicazione, ma bypassa tutte le normali procedure di uscita dell'applicazione, e vorrei tenere tutti al loro posto.

In sostanza voglio che le cose funzionano come se un utente tirato "Esci" dal menu, ma voglio che accada automaticamente dopo che ho finito con la mia prova.

Il mio codice attualmente appare così:

#if (SUPERFANCY_TESTING_MODE)
    [self doSomething];
    exit(0); // <-- I need something better to go here
#endif
È stato utile?

Soluzione

Si può tranquillamente certi che la vostra applicazione sta per essere ucciso almeno un po 'del tempo. Così, la difesa contro le uscite simili di exit(0); è richiesta.

Tuttavia, NSApplication implementa il metodo -terminate:.

[NSApp terminate: nil]; dovrebbe fare quello che vuoi.

Io in genere suggerire la pubblicazione via -performSelector:afterDelay: con un ritardo di 0,0 per costringerlo a succedere al vertice del prossimo passaggio attraverso il ciclo di eventi.

Esempio:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top