Objective c 有没有一种方法可以在模拟器从XCode关闭时运行?

Objective c 有没有一种方法可以在模拟器从XCode关闭时运行?,objective-c,xcode,ios-simulator,Objective C,Xcode,Ios Simulator,这纯粹是为了开发目的,因为在设备上您可以使用 -(void)applicationDidEnterBackground:(UIApplication *)application 但是我经常只是点击XCode中的停止按钮来停止模拟器的运行,我需要某种方法来运行,这样它就可以告诉数据库当前的播放器已经停止播放了,你知道怎么做吗?我认为这个苹果问答会很有趣: 我是在中途发现的: 苹果提供了一个小函数来确定调试器是否附加在这里。因此,只要我的应用程序在模拟器中启动,我就会让它等待: - (BOOL)a

这纯粹是为了开发目的,因为在设备上您可以使用

-(void)applicationDidEnterBackground:(UIApplication *)application

但是我经常只是点击XCode中的停止按钮来停止模拟器的运行,我需要某种方法来运行,这样它就可以告诉数据库当前的播放器已经停止播放了,你知道怎么做吗?

我认为这个苹果问答会很有趣:

我是在中途发现的:

苹果提供了一个小函数来确定调试器是否附加在这里。因此,只要我的应用程序在模拟器中启动,我就会让它等待:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

{

#if DEBUG

// Wait max. 10 secs for debugger to attach again:

double waitTime = 0.0;
while (AmIBeingDebugged() == NO && waitTime < 15.0)
{
    [NSThread sleepForTimeInterval:0.25];
    waitTime += 0.25;
}

#endif

“但我经常只是点击XCode中的停止按钮”——这将立即终止所有进程。也许您可以研究,但我不能为您保证它确实会被调用。您永远不应该依赖ApplicationIdentinterBackground:来做任何重要的事情,因为您无法确定该方法是否会被调用。例如,如果应用程序崩溃,则根本不会调用该方法。也许在这种情况下,这真的不是那么重要,只是要意识到这一事实。至于你的问题,我认为你想要的是不可能的。退出模拟器实际上就像在实际设备上强制关机。它不调用任何方法。(这就是为什么您希望不断为用户保存数据)您希望代码在哪里运行?在模拟器内部的iOS上还是在主机Mac上?如果是后者,您可以编写一个应用程序来观察模拟器是否退出。如果是前者,你可能会倒霉,正如其他答案所提到的。OP似乎更感兴趣的是能够在模拟器退出之前运行一段代码,而不是简单地检测他正在模拟器上运行。