0

そのため、プログラムが終了するたびに呼び出される特定の関数を登録する関数を OSX (Xcode/objective C を使用) に登録する必要があります。

私はこれに遭遇しましが、それはiOS用であり、OSX用ではないと思います.

UI を NS に置き換えて試してみましたが、うまくいきませんでした。

NSApplication *app = [NSApplication sharedApplication];
[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(applicationWillTerminate:)
 name:BeCalledOnExit object:app];

しかし、それはコンパイルではありません。関数の前の .h & .m ファイルに明確にある場合、宣言されていない識別子です。

私はこれを使用した別のチャップに出くわしました:

-(BOOL) applicationShouldTerminateAfterLastWindowClosed:(NSApplication *) sender{
return TRUE
}

しかし、私のアプリは完全なステータスバーアプリであるため、うまくいきません。

基本的に、アプリ中にいくつかの一時ファイルを作成していますが、終了する直前に、アプリがこれらのファイルをクリアしていることを確認したいと考えています。私はそれを /tmp/.. に入れています。あまりにも多くのスペースを取りたくないでしょう。

私は本当に gcc/python のようなソリューションが欲しいのですが、

atexit(functionName);
4

4 に答える 4

0

通知を使用する場合は、 を観察する必要がありますNSApplicationWillTerminateNotification

于 2013-07-05T12:49:23.907 に答える
0

アプリデリゲートは、通知を取得するために - (void)applicationWillTerminate:(NSNotification *) 通知を実装する必要があります

(また)

applicationShouldTerminate を実装してファイルのクリーンを実行し、クリーンアップが失敗した場合は適切な NSApplicationTerminateReply を返すことができます

于 2013-07-05T12:49:11.110 に答える
0
NSApplication *app = [NSApplication sharedApplication];
[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(applicationWillTerminate:)
 name: NSApplicationWillTerminateNotification object:app];  
/*A notification named NSApplicationWillTerminateNotification.*/
- (void)applicationWillTerminate:(NSNotification *)notification
{

}
于 2013-07-05T12:52:15.873 に答える