Вы не можете объявить массив, используя переменную, поэтому Byte byteData[len];
не будет работать. Если вы хотите скопировать данные из указателя, вам также необходимо использовать memcpy (который будет проходить через данные, на которые указывает указатель, и копировать каждый байт до указанной длины).
Попробуйте:
NSData *data = [NSData dataWithContentsOfFile:filePath];
NSUInteger len = [data length];
Byte *byteData = (Byte*)malloc(len);
memcpy(byteData, [data bytes], len);
Этот код будет динамически распределять массив по правильному размеру (вы должны free(byteData)
, когда закончите) и копировать в него байты.
Вы также можете использовать getBytes:length:
, как указано другими, если вы хотите использовать массив фиксированной длины. Это позволяет избежать malloc / free, но является менее расширяемым и более подверженным проблемам переполнения буфера, поэтому я редко использую его.