2010-08-14 125 views
1

當我嘗試在不使用Xcode的情況下運行Iphone應用程序時,出現了一些奇怪的行爲。如果我通過選擇Build &來運行它,運行在Xcode上運行得很好,但是如果通過斷開USB電纜並點擊Iphone上的應用程序來執行它,它會崩潰,從而產生無益的崩潰日誌。通過Xcode運行Iphone應用程序並通過Iphone運行它的區別

這兩種情況之間是否有可能導致此行爲的差異?

回答

1

不同之處在於,如果您通過Xcode運行它,則會附加調試程序,並且不會應用很多限制。例如,如果一個應用程序啓動,它必須響應幾秒鐘,否則它會被殺死。如果你使用調試器運行它,那麼限制就會被解除。退出時相同:如果您點擊主頁按鈕(在iOS < 4或iOS> = 4沒有多任務處理),則應用程序將會退出5秒鐘。調試器並非如此。

如果您從崩潰日誌中發佈錯誤消息,它可能會有所幫助。

+0

你是什麼意思「必須回覆幾秒鐘」?我們的應用正在進行一個長時間的初始化過程,啓動時通常會持續20秒以上。也許我們的應用程序應該在後臺線程而不是主線程中執行初始化過程? – Diego 2010-08-14 21:50:15

+0

我剛剛在Ipod Touch 2G中測試了我的應用程序,然後在Iphone 3GS中測試了它,並且它沒有在3GS中崩潰,所以我猜想你在後臺選擇器中初始化的想法是最好的選擇。我會嘗試並報告 – Diego 2010-08-14 22:11:37

+0

'applicationDidFinishLaunching'或'application:didFinishLaunchingWithOptions:'必須及時返回。你可以簡單地用'sleep'來測試。如果你插入一個'sleep(30)',你的應用程序如果沒有被調試器運行就會被殺死。所以長時間運行的init任務應該在一個單獨的任務中運行(或者'performSelectorInBackground:withObject:'並且一旦完成就發送一個通知)。這裏要記住的一件事是,如果該後臺任務需要修改GUI元素,則可能需要通過'performSelectorOnMainThread:withObject:waitUntilDone:'來完成。 – DarkDust 2010-08-15 09:18:20

0

從XCode運行應用程序後,你終止了它嗎?使用iOS 4時,它將繼續在後臺運行,並且當您點擊iPhone上的應用程序時,它就會顯示在前臺。

雙擊主頁按鈕,看它是否仍在運行。如果是這樣,點擊應用程序,直到出現減號並點擊它。

相關問題