2011-05-25 39 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中重新初始化它?

相关问题