Если ваше приложение полноформатно (т.е. не работает под Rosetta на Intel), вам не нужно делать какие-либо вызовы, чтобы получить эту информацию, потому что будет работать другой код, в зависимости от архитектуры, которую вы используете Вы на . Таким образом, информация доступна во время компиляции:
#if defined __i386__ || defined __x86_64__
NSString *processorType = @"Intel";
#elif defined __ppc__ || defined __ppc64__
NSString *processorType = @"PPC";
#elif defined __arm__
NSString *processorType = @"ARM";
#else
NSString *processorType = @"Unknown Architecture";
#endif
Если вы действительно хотите выполнить определение во время выполнения по какой-то извращенной причине, вы должны иметь возможность использовать функцию sysctlbyname
, определенную в <sys/sysctl.h>
.