3

マルチタスクバーからアプリを削除してから再実行すると、SIGKILLシグナルが生成されることがわかったとき、iosシミュレーターでアプリを試していました。(これを行うには、アプリを停止し、別のアプリを実行してから、マルチタスク バーから最初のアプリを削除して再実行します。)

これは私の最新の実験で Core Data を追加したことと関係があるのではないかと考えましたが、条件を単純化しようとした後、テストしたすべてのアプリで同じことが起こっているようです。

コードは、私のコメントで識別された時点でデバッガーで停止します。

#import <UIKit/UIKit.h>

int main(int argc, char *argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, nil);    //<- STOPS with SIGKILL here
    [pool release];
    return retVal;
}

また、ブレークポイントのように停止しているように見えることもわかりました。続行ボタンをクリックすると、何事もなかったかのように再開します。マークされた行に実際のブレークポイントを設定すると、そこで停止します。[続行] をクリックすると、SIGKILL シグナルを発生させずにプログラムを再開できます。

Core Data の基本的なテンプレート プログラムでこれを試してみましたが、自分で変更を加える必要はありませんでした。シグナルが発生しました。Core Data を使用しない他のプログラムで試してみたところ、信号が発生します。プログラムが既にロードされているがデバッグされていないときに試してみました。デバッグ中に問題が発生しても、プログラムは正常に動作します。

もちろん、SIGKILL は役立つエラー メッセージを表示しません。

誰が何が起こっているのか知っていますか?それは本当の問題のようには思えませんが、私はそれを理解していることを確認したいと思います.

XCODE4を使用しています。

4

1 に答える 1

4

マルチタスクバーからプログラムを削除すると、実行が停止します。これは、ドックのアプリケーション アイコンを右クリックしたときに OS X で表示される「強制終了」オプションに相当します。

iOS レベルでは、これは明らかに、SIGKILL として知られる「kill」シグナルをアプリケーションに送信することによって行われます。

于 2011-04-09T16:29:39.690 に答える