Wie kann ich meine Cocoa-Anwendung sagen, innerhalb der Anwendung selbst zu beenden?

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

  •  11-09-2019
  •  | 
  •  

Frage

Ich bin auf der Suche nach einer guten Art und Weise meiner Cocoa-Anwendung zu sagen, mich zu beenden. Seien Sie versichert, dass dies nicht für Produktionscode verwendet werden. Ich bin nur für eine einfache Möglichkeit suchen einen Test laufen zu lassen und dann die Anwendung schließen während des Debuggens.

Ich habe festgestellt, dass exit(0); die App schließen, aber es umgeht alle normalen Anwendung Exit-Prozeduren, und ich möchte sie alle an ihrem Platz halten.

Im Grunde möchte ich die Dinge arbeiten, als ob ein Benutzer „Beenden“ aus dem Menü gezogen, aber ich will es automatisch geschehen, nachdem ich mit meinem Test beendet habe.

Mein Code sieht derzeit wie folgt aus:

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

Lösung

Sie können ziemlich sicher sein, dass Ihre App zumindest einen Teil der Zeit zu getötet werden. So gegen Ausfahrten dergleichen exit(0); verteidigen ist erforderlich.

Allerdings NSApplication implementiert die -terminate: Methode.

[NSApp terminate: nil]; tun sollten, was Sie wollen.

würde ich in der Regel vorschlagen, es über -performSelector:afterDelay: mit einer Verzögerung von 0,0 Entsendung es zu zwingen, an der Spitze des nächsten Durchlaufs durch die Ereignisschleife geschehen.

Beispiel:

[NSApp performSelector:@selector(terminate:) withObject:nil afterDelay:0.0];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top