当我进入主屏幕并回归时,iPhone应用程序关闭就像一个错误

时间:2014-04-02 01:06:26

标签: ios xcode5 sprite-kit skaction

我正在尝试使用SpriteKit为iPhone编写游戏。几乎所有的一切都很好,并按我的预期运行,但唯一的问题是当我测试它,看看如果我去主屏幕并回到应用程序会发生什么,我注意到每次我回到应用程序它显示它最后一个状态,然后在一秒钟之后突然关闭应用程序。 我的应用程序正在使用声音,我注意到如果我删除播放声音动作,一切都很好。声音动作如下:

SKAction * playClickSound = [SKAction playSoundFileNamed:@"buttonClick.caf" waitForCompletion:NO];
[self runAction:playClickSound];

有趣的是,如果我的应用程序运行但没有得到运行此操作的重点,那么当我在应用程序和主屏幕之间来回切换时,一切正常。有趣的是它在模拟器上似乎没问题,这个问题只发生在我的iPod touch上运行代码时。 在此先感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

因此,答案是在应用程序重新启动时在应用程序委托中添加禁用AVAudioSession,并在其再次变为活动状态时再次启用它。 此行应添加到AppDelegate.m文件的顶部:

@import AVFoundation;

必须将[[AVAudioSession sharedInstance] setActive:NO error:nil];[[AVAudioSession sharedInstance] setActive:YES error:nil];添加到函数中,如下所示:

- (void)applicationWillResignActive:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:NO error:nil];
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:NO error:nil];
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [[AVAudioSession sharedInstance] setActive:YES error:nil];
}

特别感谢@ 0x7fffffff的帮助。

答案 1 :(得分:-1)

当您的应用因内存压力而在后台终止时会发生这种情况。不幸的是,由于iOS 7的新图形“功能”现在更频繁地发生,特别是在旧设备上。

您应该考虑为您的应用实施状态恢复。