这可能对任何人都没用,但是可以通过在try {} catch(NSException * e){}块中嵌套调用来从UIApplicationMain返回。我目前正在测试我的设置过程,以便在应用程序退出后运行一些逻辑。我想更进一步,实际编写单独的UIApplication子类并以串行方式运行它们但是UIApplicationMain不想玩得很好,它是一个单例,它必须记住它曾经是什么(第一个UIApplication被实例化) )。这是我从第一次调用UIApplicationMain返回后尝试创建第二个UIApplication时得到的错误......
2010-12-28 16:01:36.890 SomeFakeAppName[26993:207] *** Assertion failure in UIApplicationInstantiateSingleton(), /SourceCache/UIKit_Sim/UIKit-1447.6.4/UIApplication.m:1263
所以,有两个问题:
据我所知,我可能正在“做错了”,但我怎样才能清除UIApplication的内存,以便它认为每次连续的UIApplication实例化都是第一次?
如果这是死路一条,我可以尝试通过手动设置主事件循环并实例化UIApplication来替换UIApplicationMain,有没有人这样做过?
答案 0 :(得分:2)
很确定你做不到。 UIApplication是在操作系统级别上进行管理的,Apple并没有真正为您提供驱动所有工作方式的关键。
如果可能的话,你会潜入私人API(这不应该是一个问题因为我们正在谈论非发布的测试套件设置吗?)。查找位于不同位置的UIApplication.h
反编译头文件。寻找听起来像你想要的私人方法并试一试。
但很可能,这条道路会导致痛苦和痛苦。