AVAssetWriterInput崩溃

时间:2011-09-11 01:15:25

标签: iphone avfoundation avassetwriter

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

[writerInput appendSampleBuffer:sampleBuffer]

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

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

这个错误信息甚至意味着什么?可能意味着AVAssetWriter已被解除分配?或者这是否意味着AVAssetWriterInput已被解除分配?还有别的吗?

谢谢,

詹姆斯

1 个答案:

答案 0 :(得分:0)

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

如果您在启用僵尸(也就是NSZombiesEnabled)的情况下运行,系统将跟踪解除分配的对象并保留足够长的引用,以便使用悬空指针进行检测。

知道您过度释放对象比找到错误的版本更容易。关于这个问题已经写了很多。