Символ не найден: _LAErrorDomain

Приложение аварийно завершает работу с Symbol not found: _LAErrorDomain при использовании LAErrorDomain (из инфраструктуры локальной аутентификации для Touch ID) на iOS ниже версии 8.3. Хотя на iOS 8.3 работает нормально.

Скомпилировано с Xcode 6.3.2 и iOS SDK 8.3. Обновление: то же самое с Xcode 6.4 и iOS SDK 8.4.


person tobihagemann    schedule 22.06.2015    source источник


Ответы (1)


Это действительно странно. Я не очень понимаю, что вызывает это, потому что LAErrorDomain должно быть доступно как константа, начиная с iOS 8.0. Может быть, кто-то знает истинную проблему здесь, но вот мой обходной путь:

К счастью, домен ошибки локальной аутентификации также определяется как макрос в <LocalAuthentication/LAPublicDefines.h>, который уже импортирован, если вы используете локальную аутентификацию.

Вы можете либо использовать kLAErrorDomain напрямую (точнее @kLAErrorDomain, потому что макрос определяется как строковый литерал), либо определить свою собственную константу:

// Workaround for iOS below 8.3: LAErrorDomain constant can't be found and leads to a crash
NSString *const MyLAErrorDomain = @kLAErrorDomain;
person tobihagemann    schedule 22.06.2015
comment
Apple исправила более поздние версии заголовка, указав, что символ LAErrorDomain доступен только в iOS 8.3 и более поздних версиях. Поэтому вам нужен обходной путь, если вы поддерживаете любую систему iOS 8.x. - person Carl Lindberg; 05.09.2016