2

我正在录制视频的尾随缓冲区。每隔 15 秒,我将创建一个 的新实例AVAssetWriter,并将我的实例添加AVAssetWriterInput为输入。我正在使用 抓取帧AVCaptureVideoDataOutput,并像这样添加它们:

[writerInput appendSampleBuffer:sampleBuffer]

这在大多数情况下都可以正常工作,但有时应用程序会因以下错误消息而崩溃:

*** -[CFDictionary removeObjectForKey:]: message sent to deallocated instance 0x96b28a0

此错误消息甚至意味着什么?这可能意味着AVAssetWriter已解除分配?或者这是否意味着AVAssetWriterInput已解除分配?还有什么?

谢谢,

詹姆士

4

1 回答 1

0

消息 removeObjectForKey: 被发送到地址为 0x96b28a0 的 CFDictionary 实例(可能是 NSDictionary)。该实例已被释放,但代码仍在使用指向它的指针。

如果您在启用僵尸(又名 NSZombiesEnabled)的情况下运行,系统将跟踪已释放的对象并保持引用足够长的时间以使用悬空指针进行检测。

知道你正在过度释放一个对象比找到不正确的释放更容易。关于这个主题已经写了很多。

于 2012-02-14T02:25:12.470 回答