1

我使用 NSMutableData 对象来存储代表系列数据的 32 字节结构列表。这些系列可能被扩展、添加、对齐等。为了节省不必要对象的分配,我尝试将字节扩展和附加到现有对象而不是分配新对象。

我今天注意到模拟器中有一些奇怪的行为:1)使用 setLength 和 increaseByLength 并不总是将所有新字节归零,2)在修改后使用这些对象会导致崩溃。崩溃都发生在非常不同的区域,但总是 EXC_BAD_ACCESS。经过相当多的调试后,我最终通过 mutableCopy 分配了新对象以供使用,并在完成后将它们分配给我的对象属性。这解决了我遇到的所有问题。

*我在后台线程中处理这些对象,但已将所有操作包装在一个同步块中,并且无法观察到相关对象的任何竞争条件。

有没有人注意到类似的怪事?

谢谢。

4

1 回答 1

0

我还没有收到这个答案,所以我想我会跟进我的解决方案。我最终根据需要重新分配了新的 NSData / NSMutableData 对象,并在将其包装在 NSData 对象中之前直接使用内存。

于 2012-09-20T20:03:48.710 回答