2012-09-11 54 views
-3

在我使用它的应用程序中,我需要从代码中关闭它。我正在使用exit(0)iOS退出(0)奇怪的行为

是的,我知道,我应该从代码

不关闭程序。当我以这种方式关闭应用程序,然后再次运行它,有一些奇怪的behaviur - 应用程序不启动,也从飞溅屏幕,就像新的应用程序实例,既不是从最后一个视图看,也不像应用程序从背景转回。

取而代之的是,我的应用程序出现一秒钟一些随机的,非交互式的视图,并在此启动画面开始运行之后。

我很困惑,因为我找不到源代码,以及如何修复这个丑陋的错误。你可以帮我吗?

+2

如何解决呢?不要退出代码。 –

+0

[这里](http://stackoverflow.com/a/12195593/1603234)是一个答案,如果你想退出应用程序! – Hemang

+0

谢谢你的答案,但正如我写的 - 我知道**,我不应该使用退出(0) - 告诉我不要这样做不是我期望的答案:) – Thaven

回答

6

这正是exit(0)的问题。你会得到奇怪的多任务行为和各种其他问题。

你根本无法在代码中终止你的应用程序。你应该向我们解释为什么你认为你需要退出编程,所以我们可以帮助你找到一个替代解决方案。

+1

这是正确的,所有的UIApplicationDelegate生命周期方法都会被跳过,因此可能会有很多内置的功能正在跳过(例如,当您从背景回来时显示当前应用的屏幕截图,这听起来类似于你看到了) – wattson12

+0

@ wattson12 - 谢谢你的回答 - 你是唯一真正回答我的问题的人。你可以复制你的评论作为答案,所以我可以接受它吗? 如果我对决定有任何影响,我不会做任何应用程序终止... – Thaven

+0

@Thaven我认为Parags的答案真的是一样的,它和我的基本相同,并且有我从 – wattson12

5

Technical Q&A QA1561
没有提供用于正常终止iOS应用程序的API。

不要致电出口函数。调用退出的应用程序将出现 ,使用户崩溃,而不是执行优雅 终止和动画回到主屏幕。
此外,数据可能无法保存,因为 -applicationWillTerminate:如果你调用exit和类似UIApplicationDelegate方法将不会被调用 。如果在开发或测试 时有必要终止您的应用程序,中止函数或 声明宏被推荐。

0

而不是

exit(0) 

试试这个:

[[UIApplication sharedApplication] performSelector:@selector(terminateWithSuccess)]; 
+0

是不是私人API? – Thaven

+3

这是但你的应用程序可能会被拒绝的方式:) – Stefan