2015-05-01 8 views
1

У меня есть следующий код, который извлекает данные из ALAssetRepresentation.«Правильный» способ лить размер ALAssetRepresentation (длинный длинный) в size_t для 32-разрядных устройств

ALAssetRepresentation *representation = ...; 
size_t size = [representation size]; // 'size' returns a long long 
uint8_t *bytes = malloc(size); 

При создании для 32-разрядных устройств на iOS я получаю следующее предупреждение.

enter image description here

Слепо заливке long long на size_t работает, но я не знаю, что такое «правильный» способ справиться с этой ситуацией является. Хотелось бы знать, как лучше справиться с этим.

+0

Ха-ха, очень верно –

ответ

0

Поскольку вы назначаете тип size_t, произведите результат как size_t.

size_t size = (size_t)[representation size]; 

Единственный риск в том, что representation size может быть несколько больше, чем то, что будет соответствовать в size_t. Но если это произойдет, значение слишком велико, чтобы распределять память для него в любом случае при работе на устройстве iOS, поэтому это большая проблема, чем потеря точности.

 Смежные вопросы

  • Нет связанных вопросов^_^