У меня действительно простая структура 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 в скопированном месте в памяти и указывать на этот BLOB-объект с помощью receivedDynamicPlacesArrayPointer
.
Вполне возможно, что я совершил ошибку, указатели сбивают меня с толку, хотя я думаю, что понимаю их. Любая помощь будет принята с благодарностью.