iOS 8 : AudioServicesPlaySystemSound is not playing Sound when AudioServicesDisposeSystemSoundID is called afterwards

标签 ios audio

当调用AudioServicesPlaySystemSound时,它会很好地播放之前创建的SystemSound。但是当我之后直接调用 AudioServicesDisposeSystemSoundID 时,没有播放声音。似乎声音资源在播放之前就被处理掉了。

但是在 this Stackoverflow-Question人们说,有必要处理 System-Sound 以避免内存泄漏。

这两种方法的正确方法是怎样的?我应该在几秒钟后用计时器调用 Dispose-Method 吗?或者创建一个单例,在第一次调用 Play-Method 时创建一次声音资源,并在单例的 dealloc 中处理资源?

- (void) playSound {
    NSURL *url   = [[NSBundle mainBundle] URLForResource: @"SentMessage"
                                           withExtension: @"wav"];

    SystemSoundID mBeep;
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)url,  &mBeep );

    AudioServicesPlaySystemSound(mBeep);
    AudioServicesDisposeSystemSoundID(mBeep);  
}

最佳答案

您可以使用 AudioServicesAddSystemSoundCompletion 注册一个回调,以便在您的声音播放完毕时调用。您可以在那里处理系统声音。

或者在你类(class)的dealloc中。

关于iOS 8 : AudioServicesPlaySystemSound is not playing Sound when AudioServicesDisposeSystemSoundID is called afterwards,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29614179/

相关文章:

json - Three20 和 Facebook Graph API 问题

ios - 当连接到特定 wifi : ios 时运行我的应用程序

xcode - 您可以同时安装 Xcode 3 和 Xcode 4 preview 6 吗?

ios - 处理组合的 react 性 cocoa 信号

java - 如何将音频文件修剪到不到1秒?

JavaScript/SoundManager2 - 不播放任何东西

ios - 如何诊断和解决 WCSession sendMessage(_ :replyHandler:errorHandler:)?

ios - swift中的音频播放器没有获得音量和音高的值(value)

android - 从内存中播放音频

php - 从 PHP 文件提供的 Ogg 音频在 Chrome 上无法搜索