ios - AVAudioPlayer初始化和内存管理

标签 ios memory-management avaudioplayer

我正在想办法 -

每次使用 AVAudioPlayer 时,我都需要初始化一个新的 AVAudioPlayer 对象。

我在 View 上有 10 个 Sentence 对象,我希望向每个 Sentence 对象添加一个“PlaySentence”方法,以便当用户点击 Sentence 时应用程序将播放声音文件。

我在许多 View 上都需要这种行为,所以我想将该方法添加到对象类中,这样我就可以简单地调用 -

[Sentence playSound];

由于每次我想使用 AVAudioPlayer 时都会以任何方式初始化它,所以我不明白为什么这应该是更昂贵的操作。

我说得对吗/这是满足这种需求的好方法吗?为什么?

谢谢

沙尼

最佳答案

所以,如果我理解正确的话,您希望您的 Sentence 对象有一个 playSound 方法,该方法设置 AVAudioPlayer 并播放声音。

你绝对可以这样做,但要注意,如果你有很多 Sentence 对象,那么你最终将创建很多 AVAudioPlayer 对象。但是您可以在文件播放完毕后释放它来阻止高水位线过高。

您可以执行此操作的另一种方法是在 Sentence 上使用一个方法来返回要播放的文件的 URL,然后在您的 View 中只有一个 AVAudioPlayer 实例您想要播放声音的 Controller ,并每次都将其设置为正确的文件。这是我个人建议的做法。

关于ios - AVAudioPlayer初始化和内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9818143/

相关文章:

java - 如何减少此代码/bufferedreader的内存使用

ios - AVAudioPlayer 暂停问题

ios - iOS 版 Google Analytics 中的线程崩溃

ios - 使用 NSURLSession 进行 HTTP 基本身份验证

numpy - RAY Python 框架内存不足

c - 当从函数 printf "Hello world"调用时,哪个内存段是 ("Hello world")?

ios - 设置音量属性时 AVAudioFoundation 出现问题

ios - 在呈现 ViewController 应用程序时收到内存警告

ios - 它只是仅限于英特尔 Mac 的 iPhone 模拟器吗?

ios - 如何从 .usdz 创建 SCNNode?