Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 8.3上名为crash的SpriteKit PlaySoundFile_Ios_Swift_Sprite Kit - Fatal编程技术网

iOS 8.3上名为crash的SpriteKit PlaySoundFile

iOS 8.3上名为crash的SpriteKit PlaySoundFile,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我在我的应用程序的崩溃日志中看到了少量名为SpriteKit PlaySoundFileName的崩溃。这些崩溃发生在iOS 8.3上 0 CoreFoundation __exceptionPreprocess 1 libobjc.A.dylib objc_exception_throw 2 CoreFoundation -[NSException initWithCoder:] 3 SpriteKit +[SKPlaySound playSoundFileNamed:atPosition

我在我的应用程序的崩溃日志中看到了少量名为SpriteKit PlaySoundFileName的崩溃。这些崩溃发生在iOS 8.3上

0 CoreFoundation __exceptionPreprocess  
1 libobjc.A.dylib objc_exception_throw
2 CoreFoundation -[NSException initWithCoder:]
3 SpriteKit +[SKPlaySound playSoundFileNamed:atPosition:waitForCompletion:]
4 SpriteKit +[SKAction(SKActions) playSoundFileNamed:waitForCompletion:]
...
以及一些相关的碰撞:

0 CoreFoundation __exceptionPreprocess  
1 libobjc.A.dylib objc_exception_throw
2 CoreFoundation -[NSException raise:format:]
3 SpriteKit +[SKPlaySound playSoundFileNamed:atPosition:waitForCompletion:]
4 SpriteKit +[SKAction(SKActions) playSoundFileNamed:waitForCompletion:]
...
有人知道是什么导致了这次崩溃以及如何修复吗?我是否应该将对PlaySoundFileName:的所有调用都包装在try-catch块中

已编辑

更多信息:


我用的是斯威夫特。试着播放我自己的声音,我看到了来自不同声音的崩溃。我还看到了一些来自iOS 8.2的报告,所以这次崩溃可能不是iOS 8.3特有的

播放声音的台词:

var sound = SKAction.playSoundFileNamed("Sound/ABC.mp3", waitForCompletion: false)
self.runAction(sound)

不久前我也遇到过类似的问题。问题是,由于每次用户点击屏幕时我都在创建变量,因此无法足够快地创建变量来播放。尝试在didMoveToView中定义操作,看看是否仍然存在问题。
希望这对我有帮助。我也有类似的问题。我的游戏(swift+spritekit)在iOS 8.x上崩溃了。但是在9.x上工作得很完美。原木:

2015-12-15 21:27:40.827 MyGame[24055:2285857]
        *** Terminating app due to uncaught exception 'NSInvalidArgumentException', 
        reason: 'Resource assets/mfx/my_sound.m4a can not be loaded'
    *** First throw call stack:
    (
    0   CoreFoundation     0x008ae746 __exceptionPreprocess + 182
    1   libobjc.A.dylib    0x02598a97 objc_exception_throw + 44
    2   CoreFoundation     0x008ae66d +[NSException raise:format:] + 141
    3   SpriteKit          0x011ca435 +[SKPlaySound playSoundFileNamed:atPosition:waitForCompletion:] + 628
    4   SpriteKit          0x011601b4 +[SKAction(SKActions) playSoundFileNamed:waitForCompletion:] + 78
    5   MyGame             0x0012eb25
解决方案是:只加载一次所有声音,作为常量(let)。不要每次播放声音时都创建变量

import SpriteKit
import AVFoundation

class Sounds
{
    static let SOUND1 = SKAction.playSoundFileNamed("assets/sound1.m4a", waitForCompletion: false)
    static let SOUND2 = SKAction.playSoundFileNamed("assets/sound2.m4a", waitForCompletion: false)
}
然后,在某些情况下,例如:

func playSound1()
{
    self.runAction(Sounds.SOUND1)
}

在这里找到类似/相同的问题:

试试这个,让我知道它是否有效

var audioPlayer = AVAudioPlayer()

func playAudio() {
    // Set the sound file name & extension
    let alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("ABC", ofType: "mp3")!)


    // Preperation
    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: [])
    try! AVAudioSession.sharedInstance().setActive(true)

    // Play the sound
    do {
        try audioPlayer = AVAudioPlayer(contentsOfURL: alertSound)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
    } catch {
        print("there is \(error)")
    }
}

请提供更多信息:您是想播放自己的声音还是来自系统包的声音?是某个特定的声音导致崩溃还是全部崩溃?它是否仅在iOS 8.3上崩溃?你能粘贴产生/播放声音的线条吗?等等…你用的是什么语言-Swift还是Obj-C?我用的是Swift。试着播放我自己的声音,我看到了来自不同声音的崩溃。我还看到了一些来自iOS 8.2的报告,所以现在可能是iOS 8.3。您是否尝试过使用不同的音频编码和/或不同的声音文件?您好,在哪里可以找到答案?我的一个应用程序在播放声音时崩溃并抛出相同的异常。这种情况并非总是发生,但只有少数情况