web-dev-qa-db-fra.com

dyld: Symbole introuvable: _NSURLAuthenticationMethodClientCertificate lors de la tentative d'exécution d'une application iOS

Mon application plante avec le message:

dyld: symbole introuvable: _NSURLAuthenticationMethodClientCertificate
Référencé dans:/var/mobile/Applications/C7B596AD-FB09-4685-BDFC-7E955A5DD185/IRON TRAINERS.app/IRON TRAINERS Attendu dans: /System/Library/Frameworks/CFNetwork.fr/CFNetwork.fr/CFNetwork/CFNetwork/CFNetwork/mobile/Applications/C7B596AD-FB09-4685-BDFC-7E955A5DD185/IRON TRAINERS.app/IRON TRAINERS (lldb)

quand j'essaie de construire et de courir. Lorsque je supprime le réseau CFNetwork de mon projet, cela fonctionne, je ne sais pas pourquoi.

Je viens d'installer Xcode6Beta et d'ouvrir mon projet. Cela fonctionnait bien sur Xcode5.1.

MISE À JOUR:

Cela fonctionne bien sur le simulateur iOS avec Xcode 6, le problème est sur mon appareil sous iOS 7.1.1.

MISE À JOUR 2:

La réponse sélectionnée ci-dessous a fonctionné pour moi, même si j'avais déjà ajouté explicitement le cadre de base à mon projet, je devais le supprimer et l'ajouter à nouveau. Problème résolu, au moins, pour le moment. :)

48
Jorge

Modifié pour inclure deux étapes possibles à suivre:

  1. Assurez-vous que vous avez un cadre de base pour votre projet. (Retirez et ajoutez-le à nouveau pour être sûr).
  2. Assurez-vous que le framework Foundation est avant CFNetwork.

Il semble y avoir un changement dans l'inclusion des en-têtes dans iOS8.0 (le fichier glextensions, par exemple, ne figure plus dans l'en-tête supérieur). Si vous ajoutez explicitement le framework Foundation à votre projet, cela se passera bien. Bien entendu, rendre CFNetwork facultatif conduira à des échecs et n’est qu’une solution à l’erreur de construction et non une solution globale.

enter image description here

87
plluke

J'ai eu un problème similaire avec UIAlertAction

dyld: Symbole non trouvé: _OBJC_CLASS _ $ _UIAlertAction Référencé depuis:/var/mobile/Applications/.... app/... Attendu dans: /System/Library/Frameworks/UIKit.framework/UIKit dans/var/mobile/Applications/.... app/...

Faire UIKit.frameWorkOptional a résolu mon problème. Dans votre cas, je devine, rendant votre CFNetwork.frameworkoptional résoudra également votre problème.

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

38

Réorganiser en Xcode n'a pas suffi. J'utilise Cocoapods, qui crée un fichier Pods.xcconfig. Cela a une ligne OTHER_LDFLAGS. Je mets -framework Foundation comme première entrée, et cela a fait fonctionner mon projet.

OTHER_LDFLAGS = -framework Foundation -ObjC …

(Attention, ce fichier est re-généré chaque fois que vous pod update.)

16
Graham Perks

Réorganisez vos frameworks pour avoir Foundation avant CFNetwork.

C'est une solution temporaire à quelque chose qui est évidemment un bogue dans Xcode 6.

11
Felix Lapalme

J'ai rencontré ce problème précis à la WWDC. J'ai parlé à un couple d'ingénieurs Apple) qui m'ont dit qu'il s'agissait d'un bogue dans le SDK causé par le déplacement de symboles entre CFNetwork et Foundation et que cela serait résolu dans la prochaine version, car très Vous pouvez contourner ce problème dans certains cas en jouant avec les ordres importés, mais cela ne fonctionnera pas toujours.

6
user2620092

J'ai eu le même problème en utilisant sqlite3 avec Xcode 6.3 sur un appareil sous iOS 8.1.3 et donc en utilisant sqlite3 v3.7.13.

La fonction C sqlite3_errstr () a été introduite dans sqlite3 v3.7.15.

Mon code appelait sqlite3_errstr ().

L'application se bloquait au lancement.

Définir libsqlite3.dylib comme facultatif (plutôt que requis) a été efficace.

2
Nicolas Buquet

J'ai une erreur similaire: dyld: Symbole non trouvé: _ NSDictionary0 Par le lien: je réinitialise la cible de déploiement de mes projets associés sur la même valeur: 8.0, puis ça va. Peut-être que quelque chose a changé dans ios9.0 et ios8.0, donc si nous voulons rendre la version 8.0 compatible, nous devons faire connaître les projets connexes.

dyld: symbole introuvable: ___NSDictionary0__ lors de l’utilisation du fichier binaire google ServiceGenerator avec des documents de découverte dans XCode 7 et iOS 9.0 cible

1
Huangzy

Les rares fois où il m'est arrivé un simple nettoyage (Maj + cmd + K) a fait l'affaire.

1
Joseph Junior Sfeir

Rendre CFNetwork.framework optionnel cela a fonctionné pour moi

0
Vishal Parihar