2014-02-19 84 views
2

終止後,我的iPad應用程序出現問題。 我將我的應用程序加載到設備拋出Xcode,並完成它的執行。 當我從Xcode重新啓動此應用程序(單擊運行按鈕)時,一切正常。 但是,如果我嘗試從移動設備運行應用程序(點擊應用程序ico),我有不好的結果(一些數據文件變得不一致)。從Xcode和設備重啓應用程序有什麼區別

如果我從應用程序的所有文件保存到Mac應用程序後終止,然後嘗試在同一個數據文件這兩種方式來啓動應用程序......這個問題似乎太...

這是什麼之間的不同兩種方式來運行應用程序(從Xcode和設備)? 在第一和第二種情況下調用了哪些不同的函數? 感謝您的幫助...

+1

哪種數據文件變得不一致? –

+0

它是數據庫文件,我在終止和解密應用程序開始後加密 – irumata

+0

你是如何'完成'在你的應用程序的執行? – Merlevede

回答

-1

如果您在應用程序處於前臺時使用Xcode終止應用程序,那麼最終可能會出現不一致並且尚未保存的內容。但是,如果您首先爲應用程序創建背景並等待很短時間(如10秒),然後從Xcode中終止應用程序,則應該基本上與背景相同,然後在設備上終止應用程序。應用程序中的某些內容可能會在應用程序後臺保存/同步,如果在應用程序處於前臺時將其從Xcode中刪除,則不會發生這種情況。

編輯:

確保當你寫,你正在做的原子以及數據文件。這將防止文件只被部分寫入,因爲它會首先將它寫入臨時文件,然後在完成寫入後將其移動到位。如果你的應用程序在通過這篇文章中途遇害,那麼如果這些文件不是以原子方式寫入的話,這可能會破壞文件。

+0

爲什麼投票?這回答了OP的問題。 – Gavin

0

它們的啓動方式沒有區別,或者....也許。你看,事情是iOS中的應用程序並不真正被用戶終止。

當您從XCode啓動應用程序時,它會殺死任何正在運行的實例並重新啓動它。

當你開始從設備上的應用程序,它只是打開的狀態下,應用程序,如果是離開了你使用它(除非它被殺死的內存或資源的原因)

+0

該應用程序也可以被設備上的用戶明確殺死。如果你雙擊主頁按鈕,它可以讓你從那裏殺死應用程序。 – Gavin

+0

除了@加文的評論*有一點差異。當你在Xcode中啓動它時,它會連接到調試器;) – HAS

+0

@HAS是的,但沒有跡象表明調試器導致其數據損壞。 – Gavin

0

我已經解決了這個問題的最後時間!

問題出現在iOs應用程序的生命週期中。 iOS系統中斷應用程序啓動,如果它需要超過5-10秒(來源:https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

但是!如果我們運行throw XCode,這個中斷不會出現...

可能有兩種解決方案 1.在啓動時對硬任務使用dispatch_async(對我無用,因爲啓動任務必須先執行) 2.啓動後啓動所有艱難的任務(可能是在按鈕點擊後或在控制器加載後) - 我已經使用這個解決方案,一切都變好了!

相關問題