【发布时间】:2013-06-07 00:24:26
【问题描述】:
所以我正在尝试制作一个包含对象的字典,每个对象都有两个指向它们的键。我已经写了这个块来设置对象:
ALAssetsGroupEnumerationResultsBlock resultsBlock = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if(result)
{
NSIndexPath *path = [NSIndexPath indexPathWithGroupIndex:groupIndex andAssetIndex:index];
[assetsDictionary setObject:result forKey:path];
[assetsDictionary setObject:result forKey:result.defaultRepresentation.url];
}
};
这是导致此异常的原因:
malloc: * 对象 0x1f8c1200 错误:未分配指针被释放
关于如何解决这个问题,或者以这种方式实现字典的更好方法有什么想法吗?
【问题讨论】:
-
把同一个对象放到同一个字典里,多个key下没有错。鉴于您显示的代码似乎没有错。你有什么证据表明在字典中设置结果是罪魁祸首?
-
当一个对象被放入字典时,它被保留,当字典被释放时,对象也是如此。所以他们是平衡的。其他一些对象过度释放它,它只是在字典释放你发现它的时候。
-
你们完全正确。问题实际上是 assetsDictionary 是在一个 NSOperationBlock 中完成的,并且有 10 个块同时进行,所以我认为这是由于同时改变了不同线程上的内容。
标签: ios exception malloc nsmutabledictionary