2011-05-25 65 views
0

有沒有辦法告訴iOS,我不希望我的應用程序留在後臺?換句話說,我可以告訴我的應用程序在進入後臺時退出嗎?我在UITbarController的其中一個選項卡中使用ABPeoplePickerNavigationController。但是,每當它到達[ABMembersViewController applicationDidResume]時,它都會與EXC_BAD_ACCESS一起崩潰。如何告訴iOS我不希望應用留在後臺?

這裏談到的堆棧跟蹤:

0x00cc5994 <+0034> mov 0x8(%eax),%eax 
0x00cc5991 <+0031> mov 0x8(%ebp),%eax 
0x00cc598d <+0027> mov %eax,0x4(%esp) 
0x00cc5987 <+0021> mov 0x4e082(%ebx),%eax 
0x00cc597f <+0013> movl $0x0,0x8(%esp) 
0x00cc597e <+0012> pop %ebx 
ABCGetGroupCount 
-[ABAccountsAndGroupDataSource hasMultipleAccountsOrGroups] 
-[ABMembersViewController updateNavigationButtonsInSearchMode:animated:] 
-[ABMembersViewController updateNavigationButtonsAnimated:] 
-[ABMembersViewController applicationDidResume] 

因此,爲了解決它,我認爲如果我能迫使應用程序終止本身,我可以漂亮防止程序要經過這部分代碼。

+0

聽起來像一個瘋狂的方式來處理一個錯誤。爲什麼不解決問題而不是故意崩潰應用程序?你的用戶會感謝你(很可能不會,但如果你不這樣做,他們會詛咒你的)。 – 2011-05-25 16:40:44

+0

我非常想解決這個問題。然而就像我下面說的,這很像這個問題:stackoverflow.com/questions/4813744/...看來,蘋果有一個更多的bug在這裏。我從堆棧跟蹤中找不到涉及這種情況的單個代碼。它發生在每次程序命中「 - [ABMembersViewController applicationDidResume]」。 – 2011-05-26 01:03:00

+0

另一個想法是,但我實際上可以使用另一種方式來實現我需要ABPeoplePickerNavigationController進入的部分。這可能是更好的方法。謝啦! – 2011-05-26 01:20:02

回答

7
在您的info.plist

,UIApplicationExitsOnSuspend設置爲yes

+0

我同意Roger說有可能有更優雅的解決方案 – 2011-05-25 16:59:18

2

雖然會導致應用退出而不是暫停可以通過隱藏它解決這個問題,你應該妥善解決的問題,並確保您的應用程序可以與懸掛應付。

用戶(在支持它的設備上)通常希望應用程序暫停,並且可能會感到驚訝,因爲任何原因它們切換到另一個應用程序時,它們似乎會崩潰(這是它們對它們的看法)。

如果要回到之前的位置,這會特別討厭,比重新啓動應用程序花費更多的精力。

繼續...你知道這是有道理的...做得很好!

+0

這段代碼的問題在於它完全是蘋果的代碼。恢復ABPeoplePickerNavigationController觸發上述問題。我在代碼中隨處設置了斷點。但是在整個堆棧跟蹤中我看不到任何代碼。這很像這個問題:http://stackoverflow.com/questions/4813744/weird-crash-in-abpeoplepicker看來,蘋果有一個更多的bug在這裏。 – 2011-05-25 21:51:41

+0

還有一個想法,但我實際上可以用另一種方式來實現我需要ABPeoplePickerNavigationController的部分。這可能是一個更好的方法。謝啦! – 2011-05-26 01:20:15

0

沒有看到代碼的其餘部分,很難找出問題所在。通常,EXC_BAD_ACCESS表示您嘗試將消息發送到發佈的對象。你能否在viewWillDisappear或類似的方法中釋放某些東西,而不是在viewWillAppear中重新初始化它?

相關問題