我使用 ARC 构建了一个相当简单的应用程序。但是,我遇到了内存不足,但我不知道是什么原因造成的。由于我无法澄清是什么原因造成的,因此我有一些具体的细节和问题。
当我尝试加载新的视图控制器时,问题就出现了。AVAudioPlayer
这个视图控制器承载了许多图像,并且在加载时会在我拥有的单例类中添加一个 3-4 分钟的音频文件。
当视图控制器被推送和弹出 8-10 次时会出现问题。当视图控制器弹出时,我调用stop
并将AVAudioPlayer
所有相关对象(包括AVAudioPlayer
实例)返回为零。
我真的不明白是什么导致了内存泄漏,或者还有什么可能会破坏设备内存,但我确实有一些具体的问题。
停止时AVAudioPlayer
,是否仍允许在内存中适当释放?
AVAudioPlayer
调用后将指针设置为 nil 会stop
阻止系统从设备内存中释放某些数据吗?
在 ARC 中,当所有者被释放时不应该释放任何东西(我问的是我的所有视图和数据UIViewController
都从堆栈中弹出)吗?
我应该知道 ARCAVFoundation
或ARC 中有什么问题吗?AVAudioPlayer
是否stop
以错误的方式结束音频会话/是否已将其释放?
编辑:我已经开始使用工具工具来跟踪我的分配和泄漏。没有任何内存泄漏,或者工具说,但应用程序会崩溃,几乎不管活动字节。当使用的总 RAM 超过 200MB(210-230MB - 我的设备有 256MB 的 RAM)时,应用程序将崩溃。我的新问题是分配的总字节数(即使它们不存在)会影响内存崩溃吗?如果是这样,我该如何防止这种情况?
这是崩溃的运行图像。你可以在最后看到一堆内存警告。