我有一個非常簡單的C結構,像這樣:存儲C結構的C數組中的NSData
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
確實指向數組的第一個struct元素,然後通過length
告訴它有多少元素。我認爲這很好。
最後,另一方面,當解碼我的對象時,我會這樣做。
[receivedData getBytes:receivedDynamicPlacesArrayPointer length:[receivedData length]];
但我得到一個EXC_BAD_ACCESS
在那一行,我不能弄清楚爲什麼。據我所知,文檔應該將NSData中的字節存儲到內存中的複製位置,然後使用receivedDynamicPlacesArrayPointer
指向該blob。
這是完全可能的,我犯了一個錯誤,指針讓我絆倒,即使我認爲我理解他們。任何幫助將不勝感激。
啊,精彩紛呈。是的,我完全忽略了「進入緩衝區」的一部分。謝謝(當SO停止時,標記爲已解決並讓我選擇答案).. – jbrennan