質問

アプリケーションが終了したときに実行する必要があるコードがいくつかあります。次のように、nsapplicationwillterminateNotificationのコントローラーを登録します。

[[NSNotificationCenter defaultCenter] 
    addObserver: self
       selector: @selector(applicationWillTerminate:)
           name: NSApplicationWillTerminateNotification
         object: nil];

さて、アプリを起動して最初の20秒以内に終了した場合、 applicationWillTerminate 呼び出されます。後でアプリケーションを終了した場合、そうではありません。私のアプリケーションでは、この動作を引き起こす可能性がありますか?また、同じ結果を伴うNSApplicationの代表としてコントローラーを設定しようとしました。何か案は?

ありがとう。

ああ、これはXcode 3.2、Snow Leopard 10.6.1、10.5 SDKを使用しています。デバッグとリリースビルドの両方で発生します。

役に立ちましたか?

解決

これが起こっているかもしれない理由はいくつかあります。

GC'Dを実行している場合、終了が発生する前にオブザーバーが収集され、最終化されますか? (これをテストし、少なくとも文書化する必要がある場合にバグを提出する必要があります)

あなたのアプリは静かにクラッシュしたり、exit()を直接呼び出したりしていますか?

一般に、ユーザーがそのために辞任するためにユーザーが行く可能性があるため、終了通知が受信されることを期待することはできません。

また、Snow Leopardには、通常の終了Rigamaroleを通過する代わりにアプリを安全に殺すことが安全であることをアプリがシステムに知らせることを可能にするSudnder Enternationと呼ばれる機能があります。で文書化されています nsprocessinfo ドキュメンテーション。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top