2011-04-09 253 views
3

當我從多任務欄中刪除它並重新運行時,我發現它產生了SIGKILL信號,我在ios模擬器中試用了我的應用程序。 (我通過停止應用程序,運行其他應用程序,然後從多任務欄中刪除第一個應用程序並重新運行它來完成此操作。)IOS模擬器SigKill

我認爲這可能與我最近的實驗有關,但添加了C​​ore 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信號的情況下繼續。

我試着用一個基本的核心數據模板程序,沒有我自己的修改,併發生信號。我與其他不使用核心數據的程序一起嘗試,併發生信號。當程序已經加載但未被調試時,我嘗試了它,並且程序正常運行,即使在調試時出現問題。

當然,SIGKILL不會給出任何幫助的錯誤消息。

有誰知道發生了什麼?這似乎不是一個真正的問題,但我想確保我理解它。

我正在使用XCODE4。

回答

4

從多任務欄中刪除程序將停止運行。這與右鍵單擊擴展塢中的應用程序圖標時在OS X中的「強制退出」選項等效。

在iOS級別,這顯然是通過嚮應用程序發送稱爲SIGKILL的「kill」信號完成的。

+0

這很有道理。謝謝。 – Jim 2011-04-09 18:20:39