【发布时间】:2011-09-27 18:10:45
【问题描述】:
我有一个非常简单的 C 结构,如下所示:
typedef struct {
int tag;
CGPoint position;
} Place;
即结构中的所有标量类型和没有指针。
然后我有一个这样的点数组:
Place *dynamicPlaces = calloc(numberOfPlaces, sizeof(Place));
所以dynamicPlaces 的每个元素都应该是(除非我把某些东西弄混了……我和指针当然有可能……)Place 类型的结构,其所有成员都初始化为 0,是吗?到目前为止一切顺利。
然后我试图将该数组放入一个 NSData 对象中以通过网络发送(连同元素的数量,未显示):
NSData *placesData = [NSData dataWithBytes:dynamicPlaces length:(sizeof(Place) * numberOfPlaces)];
我直接将数组传递给它,因为如果内存服务,指针dynamicPlaces 确实指向数组的第一个结构元素,然后我通过length 告诉它有多少元素。我认为这很好。
最后,我在解码对象时这样做了。
[receivedData getBytes:receivedDynamicPlacesArrayPointer length:[receivedData length]];
但我在那条线上得到了一个EXC_BAD_ACCESS,我不太明白为什么。据我所知,这应该是将 NSData 中的字节存储到内存中的一个复制位置,并使用 receivedDynamicPlacesArrayPointer 指向该 blob。
这完全有可能我犯了一个错误,即使我认为我理解它们,指针也会让我感到困惑。任何帮助将不胜感激。
【问题讨论】:
标签: ios cocoa pointers struct nsdata