有没有办法强迫iPhone应用程序重新启动?

有没有办法强迫iPhone应用程序重新启动?,iphone,objective-c,relaunch,Iphone,Objective C,Relaunch,基本上-[UIApplication openURL:]将是完美的,如果不是因为它在同一个应用程序中不起作用,至少在模拟器上不起作用-如果它在设备上起作用,请告诉我。不过,如果它只是重新启动w/o URLESS,这并不是什么大不了的事,因为我显然可以保存一些数据。这样做的目的是从本质上释放应用程序中的所有内存,并调用所有加载过程。这不是一个好主意。如果应用程序拉入外部数据源,您应该修复内存管理问题并提供重新加载按钮 如果您确实需要这样做,您可以使用-[UIApplication openURL:

基本上-[UIApplication openURL:]将是完美的,如果不是因为它在同一个应用程序中不起作用,至少在模拟器上不起作用-如果它在设备上起作用,请告诉我。不过,如果它只是重新启动w/o URLESS,这并不是什么大不了的事,因为我显然可以保存一些数据。这样做的目的是从本质上释放应用程序中的所有内存,并调用所有加载过程。

这不是一个好主意。如果应用程序拉入外部数据源,您应该修复内存管理问题并提供重新加载按钮


如果您确实需要这样做,您可以使用-[UIApplication openURL:]在Safari中打开一个网页,该网页通过url方案重定向回您的应用程序。

您几乎肯定可以使用C库调用execv来实现这一点。但和其他所有人一样,我认为甚至考虑它都是错误的

据我所知没有。如果你不得不考虑这样做,听起来好像还有另一个问题。试着发布一些关于这个问题的信息,让你觉得这样做是正确的;几乎可以肯定不是。我用过的一款游戏,Hyper Warp,就是这样做的——当它内存不足时,它会保存游戏,在他们的网站上打开一个URL,然后打开应用程序重新加载游戏。从技术上讲,这是可能的。但这真的很让人恼火。我不会故意购买这样的游戏。首先,有人知道苹果是否像使用mprotect一样在设备上禁用了execv吗?其次,当我在模拟器中尝试此操作时,它会“启动”应用程序并肯定会调用main,但由于某些原因,模拟器中会显示一个黑屏。有什么想法吗?我被难住了。