Подтвердить что ты не робот

Dyld: Символ не найден: _NSURLAuthenticationMethodClientCertificate при попытке запустить приложение iOS

Мое приложение разбивается с сообщением:

dyld: Символ не найден: _NSURLAuthenticationMethodClientCertificate
Ссылка из: /VAR/ мобильные/Применения/C7B596AD-FB09-4685-BDFC-7E955A5DD185/ЖЕЛЕЗА TRAINERS.app/IRON TRAINERS Ожидается в: /System/Library/Frameworks/CFNetwork.framework/CFNetwork в /VAR/ мобильные/Применения/C7B596AD-FB09-4685-BDFC-7E955A5DD185/ЖЕЛЕЗА TRAINERS.app/IRON TRAINERS (lldb)

когда я пытаюсь создать и запустить. Когда я удаляю CFNetwork из моего проекта, он работает, я не знаю, почему.

Я только что установил Xcode6Beta и открыл свой проект. Он отлично работал на Xcode5.1.

UPDATE:

Он отлично работает на iOS-симуляторе с Xcode 6, проблема в моем устройстве iOS 7.1.1.

ОБНОВЛЕНИЕ 2:

Выбранный ответ ниже работал у меня, хотя я уже использовал базовую структуру, добавленную в мой проект, мне пришлось удалить ее и добавить ее снова. Проблема решена, по крайней мере, пока.:)

4b9b3361

Ответ 1

Отредактировано для включения двух возможных шагов, которые необходимо предпринять:

  • Убедитесь, что у вас есть Foundation framework для вашего проекта. (Удалить и добавьте его снова, чтобы убедиться).
  • Убедитесь, что фреймворк Foundation включен в CFNetwork.

Кажется, что изменения в заголовках включают то, что в iOS8.0 (файл glextensions, например, больше не находится в верхнем заголовке). Если вы явно добавите фреймворк Foundation в свой проект, он будет прекрасно работать. Предоставление CFNetwork необязательно, конечно, приведет к сбоям и является лишь решением для ошибки построения, а не для решения в целом.

enter image description here

Ответ 2

У меня была аналогичная проблема с UIAlertAction

dyld: Символ не найден: _OBJC_CLASS _ $_ UIAlertAction   Ссылка из:/var/mobile/Applications/.... app/...   Ожидается в:/System/Library/Frameworks/UIKit.framework/UIKit  в/var/mobile/Приложения/.... приложение /...

Создание UIKit.frameWork Optional решило мою проблему. В вашем случае я предполагаю, что ваш CFNetwork.framework Optional также решит вашу проблему.

Make your <code>CFNetwork.framework</code> optional

Ответ 3

Переупорядочение в XCode не привело к трюку; Я использую Cocoapods, который создает файл Pods.xcconfig. Это имеет строку OTHER_LDFLAGS. Я положил -framework Foundation в качестве первой записи, и это заставило мою работу над проектом.

OTHER_LDFLAGS = -framework Foundation -ObjC …

(Остерегайтесь, этот файл будет повторно генерироваться каждый раз, когда вы pod update.)

Ответ 4

Измените порядок своих фреймворков, чтобы иметь Foundation перед CFNetwork.

Это временное исправление для чего-то, что, очевидно, является ошибкой в ​​Xcode 6.

Ответ 5

Я столкнулся с этой точной проблемой на WWDC. Я поговорил с несколькими инженерами Apple, которые сказали мне, что это ошибка в SDK, вызванная перемещением некоторых символов между CFNetwork и Foundation и что это будет разрешено в следующем выпуске, потому что очень скоро. Вы можете обойти его в некоторых случаях, играя с картой заказа, импортируются, но это не всегда будет работать.

Ответ 6

У меня была такая же проблема с использованием sqlite3 с Xcode 6.3 на устройстве под управлением iOS 8.1.3 и поэтому с использованием sqlite3 v3.7.13.

Функция C sqlite3_errstr() была введена в sqlite3 v3.7.15.

Мой код вызывал sqlite3_errstr().

При запуске приложение сработало.

Настройка libsqlite3.dylib как необязательного (а не обязательного) задания выполнялась.

Ответ 7

Я получил некоторую ошибку: dyld: Символ не найден: _NSDictionary0 По ссылке: I reset my related projects "Цель развертывания для одного и того же значения: 8.0, тогда это нормально. Может быть, что-то изменилось в ios9.0 и ios8.0, поэтому, если мы хотим сделать совместимым с 8.0, мы должны сообщать соответствующим проектам.

dyld: Символ не найден: ___NSDictionary0__ при использовании бинарного файла Google ServiceGenerator с документами обнаружения в XCode 7 и целевой программе iOS 9.0

Ответ 8

Сделать CFNetwork.framework необязательным, чтобы он работал у меня

Ответ 9

Несколько раз, когда это случилось со мной, простой "Чистый" (shift + cmd + K) сделал трюк.