0

这可能对任何人都没什么用,但可以通过将调用嵌套在 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,有人这样做过吗?

4

1 回答 1

2

很确定你不能。UIApplication 是在操作系统级别进行管理的,Apple 并没有真正为您提供驱动所有这些工作方式的密钥。

如果有可能,您将深入研究私有 API(这应该不是问题,因为我们正在谈论未发布的测试套件设置,对吧?)。查找UIApplication.h位于几个不同位置的反编译头文件。寻找听起来像你想要的私有方法并尝试一下。

但很可能,这条道路会导致痛苦和苦难。

于 2010-12-29T17:07:28.190 回答