2014-11-10 2 views
0

Есть ли простой оператор Objective-C IF, который можно записать, чтобы проверить, является ли процессор на устройстве iOS arm64?Проверьте, является ли процессор arm64

Причина, по которой это необходимо, заключается в том, что некоторый код Core Audio, написанный для 32-разрядных архитектур, сбой для arm64. Похоже, что замена ссылок Int16 на Int32 может разрешить его, но мне нужен оператор IF, чтобы определить тип процессора, чтобы определить, какой из них использовать.

Это может быть сделано только путем поиска конкретных типов устройств, но проверка типа процессора кажется более элегантным и надежным решением.

+3

Если вы не делаете некоторые аппаратные конкретные вещи вы, вероятно, делаете это неправильно, если вам необходимо запросить архитектуру. Таким образом, вам лучше задавать новый вопрос и размещать свой код, который сбой: если замена 'Int16' на' Int32' решает вашу проблему, то с самого начала что-то очень и очень неправильно. – DarkDust

+0

Ваше право на то, что переход на Int32 не разрешил. После инициализации удаленного аудиоустройства на arm64 приложение вылетает различными способами, например. *** ошибка для объекта 0x17420b080: Неверный указатель выведен из свободного списка *** или AURemoteIO :: IOThread EXC_BAD_ACCESS. Там много кода, я не знаю, с чего начать. Какие-нибудь советы? – Spinoxa

+0

Проверьте все типы, например, с Core Audio, образец обычно имеет тип 'UInt32',' Int32' или 'Float32'. Избегайте типов без четкого размера ('int',' long' и т. Д.). Если вы используете структуры, вам может понадобиться '__attribute __ ((упакованный))'. Сообщение, которое вы цитируете, происходит из-за неправильного управления памятью/указателем, поэтому проверяйте свои 'malloc' /' free', если вы делаете. – DarkDust

ответ

4

Там нет официального способа получить эту информацию, но вы можете сравнить размер указателя, чтобы получить это его во время выполнения:

if (sizeof(void*) == 4) { 
    NSLog(@"32-bit app"); 
} else if (sizeof(void*) == 8) { 
    NSLog(@"64-bit app"); 
} 
Смежные вопросы