Не совсем то, о чем вы просите, но одно простое решение - создать толстое приложение, чтобы оно содержало исполняемый код как для ARMv6, так и для ARMv7. Если вы сделаете это, соответствующий код будет автоматически запущен на процессоре, и вам не нужно будет выполнять проверку во время выполнения. По сути, вы позволяете загрузчику определять время выполнения за вас.
Для этого измените настройку «Архитектуры» в проекте XCode со «Стандарт (armv6)» на «Оптимизированный (armv6 armv7)»
Затем в своей реализации вы делаете это:
#if defined __ARM_NEON__
// Code that uses NEON goes here
#else // defined __ARM_NEON__
// Fallback code without NEON goes here
#endif // defined __ARM_NEON__
Существует похожий макрос, который вы можете использовать для проверки (не NEON) функций ARMv7, которые я не могу вспомнить из головы.
Если вы действительно хотите выполнить диспетчеризацию во время выполнения, взгляните на функцию sysctlbyname в libc. В частности, я думаю, что поиск параметра HW_MACHINE_ARCH
может оказаться полезным для вас.