Этот ответ очень похож на другие ответы выше, но я посчитал полезным поиграть с приведением байтов NSData обратно в массив int32_t []. Этот код корректно работает на процессоре с прямым порядком байтов (в моем случае x64), но в случае с байтовым порядком байтов (PPC) он будет совершенно неверным, поскольку байтовое представление будет иметь байтовый порядок.
int32_t raw_data[] = {0,1,2,3,4,5,6,7,8,9,10};
printf("raw_data has %d elements\n", sizeof(raw_data)/sizeof(*raw_data));
NSData *data = [NSData dataWithBytes:(void*)raw_data length:sizeof(raw_data)];
printf("data has %d bytes\n", [data length]);
int32_t *int_data_out = (int32_t*) [data bytes];
for (int i=0; i<[data length]/4; ++i)
printf("int %d = %d\n", i, int_data_out[i]);
[data release];