ios - 由于资源未随机正确加载而导致应用程序崩溃

标签 ios objective-c audio crash

基本上我是在 XCode 5 中使用 Obj-C 在 Sprite Kit 上制作游戏 每当我点击屏幕时,我都会使用 SKAction 来播放声音文件

[self runAction:[SKAction playSoundFileNamed:@"tap.caf" waitForCompletion:NO]];

之前我使用了相同声音的 mp3 文件,至少在点击超过 50 次后,错误不断随机弹出,有时多有时少,有时甚至不会导致错误,

所以我阅读了苹果文档并决定转换为 ima4 .caf 扩展名。 我不确定它是否有影响,这种情况发生的频率要少得多。我还有 2 个通过 SKActions 播放的音频文件,但都没有加载失败。

有什么建议吗?

调试控制台输出如下:

2014-07-05 16:14:15.716 GoUp[777:60b] *** Terminating app due to uncaught exception
 'Failed to Load Resource', reason: 'Resource tap.caf can not be loaded'
*** First throw call stack:
(0x306d7fd3 0x3ae86ccf 0x306d7f15 0x32e09e55 0x32dc2b2d 0xf9331 0x32de69ab 0x32f28651
0x32f236eb 0x32ef88ed 0x32ef6f97 0x306a325b 0x306a272b 0x306a0f1f 0x3060bf0f 0x3060bcf3
0x35510663 0x32f5716d 0xfcd61 0x3b393ab7)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 

只是补充一下,我尝试通过设置重复永远等待完成来检查文件是否有错误:YES SKAction 播放声音文件,(我每次都会等待它完成,否则,它可能会由于大量的行动)。它运行了至少 5 分钟没有问题,直到我决定停止该应用程序。不确定这是否确认文件没有损坏

编辑2:刚刚尝试了不同的声音文件,但使用不同的文件又发生了:(

最佳答案

我无法解释为什么会发生“崩溃”,

但是,您可以通过声明声音并将其加载到现金中来轻松解决此问题(避免每次播放声音时都加载它),如下所示:

在.h

@property (strong, nonatomic) SKAction *aSound;

在.m中 在顶部点燃它:

self.aSound = [SKAction playSoundFileNamed:@"FileName.wav" waitForCompletion:NO];

然后每次你想播放声音时调用它:

[self runAction:_aSound];

此外,由于某些原因, 我建议您将所有音频文件转换为.Wav,这是未压缩的(允许之前未解压缩文件的处理器读取它的速度更快) 它还避免了从 Xcode 断点中拾取的许多 C 异常。

关于ios - 由于资源未随机正确加载而导致应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24587903/

相关文章:

ios - 如何停止 MPMoviePlayerViewController 在 moviePlaybackDidFinish 上的自动关闭?

android - Android音频效果限制为5个频段

javascript - iOS Swift 如何将 JSON 字符串和数组或字典从 UIWebView 传递给 Javascript?

ios - 为什么在安装应用程序时启动 Paper-Onboarding 时导航 Controller 消失?

ios - UILabel 的框架如何在更改 anchor 时发生变化

c# - Monogame SoundEffect崩溃

ios - Swift 3 游戏音乐播放

objective-c - 基于节点的 GUI (Cocoa)

iphone - 保留/复制自动释放的对象

iphone - iPhone 上的单元测试无法构建