web-dev-qa-db-fra.com

libc ++ abi.dylib: se terminant avec une exception non capturée de type NSException (lldb)

Je programme une application dans Swift et lorsque j'exécute l'application de test sur le simulateur iPhone, tout fonctionne, mais j'essaie ensuite de glisser à droite, ce qui est un geste que j'ai ajouté pour qu'elle passe à la page suivante (Afficher le Contrôleur Deux) il se bloque et affiche ce rapport d'erreur dans le journal de la console.

2014-10-18 12:07:34.400 soundtest[17081:818922] *** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<soundtest.ViewControllerTwo 0x7f92f1f20090> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key sfdfa.'
*** First throw call stack:
(
    0   CoreFoundation                      0x00000001067813f5 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x00000001082afbb7 objc_exception_throw + 45
    2   CoreFoundation                      0x0000000106781039 -[NSException raise] + 9
    3   Foundation                          0x0000000106b984d3 -[NSObject(NSKeyValueCoding) setValue:forKey:] + 259
    4   CoreFoundation                      0x00000001066cb400 -[NSArray makeObjectsPerformSelector:] + 224
    5   UIKit                               0x00000001072ce97d -[UINib instantiateWithOwner:options:] + 1506
    6   UIKit                               0x000000010712f698 -[UIViewController _loadViewFromNibNamed:bundle:] + 242
    7   UIKit                               0x000000010712fc88 -[UIViewController loadView] + 109
    8   UIKit                               0x000000010712fef9 -[UIViewController loadViewIfRequired] + 75
    9   UIKit                               0x000000010713038e -[UIViewController view] + 27
    10  UIKit                               0x00000001076cd83f -[_UIFullscreenPresentationController _setPresentedViewController:] + 65
    11  UIKit                               0x000000010710bc49 -[UIPresentationController initWithPresentedViewController:presentingViewController:] + 105
    12  UIKit                               0x000000010713c121 -[UIViewController _presentViewController:withAnimationController:completion:] + 1746
    13  UIKit                               0x000000010713e461 __62-[UIViewController presentViewController:animated:completion:]_block_invoke + 132
    14  UIKit                               0x000000010713e385 -[UIViewController presentViewController:animated:completion:] + 229
    15  UIKit                               0x00000001073bb9d6 _UIGestureRecognizerSendActions + 262
    16  UIKit                               0x00000001073ba679 -[UIGestureRecognizer _updateGestureWithEvent:buttonEvent:] + 532
    17  UIKit                               0x00000001073bf296 ___UIGestureRecognizerUpdate_block_invoke662 + 51
    18  UIKit                               0x00000001073bf192 _UIGestureRecognizerRemoveObjectsFromArrayAndApplyBlocks + 254
    19  UIKit                               0x00000001073b520d _UIGestureRecognizerUpdate + 2796
    20  UIKit                               0x00000001070520a6 -[UIWindow _sendGesturesForEvent:] + 1041
    21  UIKit                               0x0000000107052cd3 -[UIWindow sendEvent:] + 667
    22  UIKit                               0x000000010701fae1 -[UIApplication sendEvent:] + 246
    23  UIKit                               0x000000010702cbad _UIApplicationHandleEventFromQueueEvent + 17370
    24  UIKit                               0x0000000107008233 _UIApplicationHandleEventQueue + 1961
    25  CoreFoundation                      0x00000001066b6ad1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    26  CoreFoundation                      0x00000001066ac99d __CFRunLoopDoSources0 + 269
    27  CoreFoundation                      0x00000001066abfd4 __CFRunLoopRun + 868
    28  CoreFoundation                      0x00000001066aba06 CFRunLoopRunSpecific + 470
    29  GraphicsServices                    0x000000010a1699f0 GSEventRunModal + 161
    30  UIKit                               0x000000010700b550 UIApplicationMain + 1282
    31  soundtest                           0x000000010624503e top_level_code + 78
    32  soundtest                           0x000000010624507a main + 42
    33  libdyld.dylib                       0x000000010ae4a145 start + 1
    34  ???                                 0x0000000000000001 0x0 + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException
(lldb) 
135
Nick

CMYR - "Cela peut également arriver si vous avez connecté un bouton à un IBAction qui n'existe plus (ou qui a été renommé)"

Si vous rencontrez ce problème, assurez-vous d’aller dans Main.storyboard, cliquez à droite sur l’icône de la boîte jaune (contrôleur de visualisation) en haut du contour du téléphone et SUPPRIMEZ la ou les prises avec des drapeaux jaunes. 

Dans de tels cas, vous avez probablement nommé une action, puis vous l'avez renommée. Vous devez supprimer l’ancien nom et si c’était le seul problème, cela commencerait dès sim! 

enter image description here

344
Trapp

Avez-vous déjà défini la variable OS_ACTIVITY_MODE par hasard?

Select from Xcode menu Product -> Scheme -> Edit Scheme.. Select the Run scheme and look under Arguments. If you see the OS_ACTIVITY_MODE variable checked, deselect it

30

Dans Xcode 9 et Swift 4:

Imprimez la pile d'exceptions pour connaître la raison de l'exception:

  1. Aller au navigateur de points d'arrêt.
  2. Ajouter (+) Ajouter un point d'arrêt d'exception.

  3. Sélectionnez le nouveau point d'arrêt, Ctrl + clic, Modifier le point d'arrêt. 

  4. Ajouter une action et entrer: po $ arg1

 enter image description here

29
Ahmed Lotfy

Les autres solutions ne fonctionnaient pas chez moi, voici la mienne. Il s'applique uniquement à Xcode 8 lors de l'exécution en mode hérité de Swift 2.3:

On dirait qu'Interface Builder tente de renommer la méthode à connecter au bouton.

Voici un radar avec plus de détails.

La solution (solution de contournement) consiste à remplacer manuellement le nom du paramètre de méthode par _:

@IBAction func editPictureTapped(sender: UIButton) {  // not working
    print("Tapped")
}

Changer à ceci:

@IBAction func editPictureTapped(_: UIButton) {     // working OK
    print("Tapped")
}
7
Andrej

Il pourrait également s'agir d'un nom d'identifiant de Segue erroné. Par exemple -

performSegueWithIdentifier("wrongSegueName", sender: self)
4
M_R_K

Cela a commencé à arriver pour moi sur Xcode 7, et je n'avais aucun point de vente avec des drapeaux jaunes que je pouvais supprimer.

La seule chose qui a fonctionné pour moi a été de remplacer cette ligne dans AppDelegate:

[window addSubview:viewController.view];

à:

[window setRootViewController:viewController];
3
Eran Talmor

Ma situation était un peu différente, j'essayais de passer à une UINavigationController, et ce qui a été arrangé pour moi, c'est d'avoir la portion principale de la file d'attente.

Pour Objective-C:

dispatch_async(dispatch_get_main_queue(), ^{
    [self performSegueWithIdentifier:@"SegueName" sender:self];
});

Pour Swift 3:

DispatchQueue.main.async { [weak self] in
    self?.performSegue(withIdentifier: "SegueName", sender: self)
}
3
Simon

Pour moi, le problème était dans mon IBAction avec un UIButton. 

Lorsque vous appuyez sur Ctrl + glisser pour créer un IBAction à partir d'un UIButton, veillez à sélectionner "UIButton" dans la liste déroulante Type. La sélection par défaut de AnyObject provoque le blocage de l'application lorsque vous appuyez sur le bouton UIButton. 

 enter image description here

3
Chris Livdahl

Dans mon cas, j'appelais une méthode de délégation, mais la méthode n'a pas été déclarée.

Cette erreur est générique et peut apparaître pour plusieurs raisons. Assurez-vous que vous n'avez pas désactivé vos journaux pour voir ce qui s'est passé. Activez OS_ACTIVITY_MODE dans les schémas si vous l'avez désactivé. Vous l'avez peut-être désactivée pour éviter de nombreux journaux inutiles, mais ils sont pratiques.

Vous pouvez également rechercher la cause plus en détail en ajoutant un point d'arrêt d'exception po $arg1. Comme déjà mentionné par Ahmed-Lotfi

Voici une liste de contrôle commune que vous pouvez parcourir.

2) Check if you have renamed an IBOutlet and calling it
3) Check if you have renamed a method name or the method doesn't exist
4) Check if you are trying to add or remove any view from hierarchy
5) Check for any missing framework or library
6) Check for any missing flag in the Proejct Setting (-obj) or any other linker flag etc.
2
Tough Guy

Cela pourrait également être une séquence déclenchée brisée, vérifiez dans votre scénario, dès que vous reconnectez les séquences ou la sortie, tout devrait fonctionner à nouveau.

 Check the Segues

Assurez-vous que la Identifier de la Segue est correcte et similaire à votre code.

 enter image description here

2
Cons Bulaquena

il peut y avoir plus d'un IBAction pour un bouton dans votre contrôleur de vue. Essayez de trouver ceux-ci et supprimez tous les éléments précédents de ce bouton dans votre contrôleur et créez un nouveau bouton. 

1
Amit Verma

Je vais ajouter mon problème à la liste des solutions possibles au cas où quelqu'un d'autre tomberait sur ce fil.

Identificateur de cellule TableView. Tout d'abord, assurez-vous que votre cellule a un identifiant. Deuxièmement, assurez-vous de référencer cet identifiant lorsque vous retirez la cellule de la file d'attente.

1
Dew Time

Assurez-vous de ne pas appliquer de manière dynamique les contraintes relatives à une vue qui ne figure pas encore dans la hiérarchie des vues.

UIView *bottomView = [[UIView alloc] initWithFrame:CGRectZero];
[self.view addSubview:bottomView];

bottomConstraint = [NSLayoutConstraint constraintWithItem:bottomView
                                                attribute:NSLayoutAttributeBottom
                                                relatedBy:NSLayoutRelationEqual
                                                   toItem:self.view
                                                attribute:NSLayoutAttributeBottom
                                               multiplier:1
                                                 constant:0];
bottomConstraint.active = YES;

Dans l'exemple ci-dessus, bottomView a été intégré à la hiérarchie des vues avant de lui appliquer des contraintes relatives.

1
Vipin

Je suis nouveau sur Xcode, il m'a donc fallu quelques heures pour comprendre le problème et charger le fichier xls. J'ai suivi la plupart des exemples de codes et aucun d'entre eux ne résout l'erreur Xcode affichée. 

La solution que j’ai trouvée est que nous devons spécifier «Ajouter aux cibles»: cochez le projet à ajouter lorsque vous importez le fichier xls dans Xcode par glisser-déposer dans Projet -> Fichiers de support. 

1
Mark Khor

J'ai eu cette erreur de deux manières:

Je recevais cette erreur lorsque je poussais dans un autre UIViewController.

TOUTEFOIS, par erreur, j'ai sous-classé l'autre classe de UITabBarController et j'obtenais cette erreur.

Comment je l'ai fait réparer? J'ai sous-classé de UIViewController et je n'écrasais plus :)


Je ne voulais pas utiliser de storyboard. Alors je l'ai supprimé. Pourtant, j'oublie de supprimer sa référence dans le projet paramètres . Je viens de cliquer sur le projet >> Général >> Informations de déploiement >>, puis je règle l'interface principale sur un espace noir. (Il était auparavant réglé sur main)

Comme vous pouvez le constater dans les deux cas, vous obtenez une erreur lorsque vous accédez à un objet qui existe ...

1
Honey

Swift 4 :

Je recevais cette erreur à cause d'un changement dans l'API UIVisualEffectView. Dans Swift 3, c'était correct de faire ceci: myVisuallEffectView.addSubview(someSubview)

Mais dans Swift 4 je devais le changer en ceci: myVisualEffectView.contentView.addSubview(someSubview)

1
lonesomewhistle

Si vous utilisez react native et react-native-firebase, veillez à associer le fichier Google-Services.plist ( https://github.com/invertase/react-native-firebase/issues/313#issuecomment -320435560 )

1
Julian K

J'ai eu cette même erreur quand j'ai eu une faute de frappe pour l'une des vues tout en créant des contraintes à l'aide du formateur visuel. J'espère que cela aidera quelqu'un ... ou moi encore un jour.

1
budidino

J'ai rencontré ce problème lorsque j'ai changé le nom de la variable qui était connectée à l'un de mes boutons. Alors garde cela en tête!

1
Sami

Pour Swift 2.3

Cela semble être un bogue avec Xcode 8 et Swift 2.3. Si vous connectez l’action du bouton à votre code via le storyboard, assurez-vous que Xcode n’a pas renommé l’action. Pour moi, il ajoute withSender: à la La fin des méthodes, donc ce que je fais est d'aller dans mon code et renommer la méthode pour correspondre à celle que Xcode a écrit.

Pour toute autre version, cochez la bonne réponse.

0
Fernando Mata

Dans mon cas, c'était InterfaceBuilder. J'avais copié certaines vues d'un autre ViewController, ce qui a gâché les contraintes.

Dans InterfaceBuilder, j'avais l'erreur de la flèche rouge sur ViewController.

Pendant l'exécution, l'application s'est écrasée.

0
Vincent

J'ai eu deux problèmes:

1) Ma cible n'avait pas le contrôleur de vue inclus qui était utilisé dans le fichier de storyboard.

2) Mon storyboard avait environ 3 ans, je devais recréer un des contrôleurs de vue dans le contrôleur de la barre d'onglets (il ne disposait que d'un UITextField et je ne sais toujours pas pourquoi cela ne fonctionnait pas)

0
Gomfucius

Seule la solution "drop armageddon" a fonctionné pour moi: 

  • supprimer l'application de l'appareil
  • projet propre
  • lancer une nouvelle installation sur le périphérique
0
Juan Fran Jimenez

Dans mon cas, c'était XCode qui était fatigué et ne parvenait pas à démarrer l'application avec ce message, en raison de l'échec d'une assertion (définie par notre code).

L'exécution sur un autre appareil a montré l'échec de l'assertion, ce que nous avons pu corriger, et tout est rentré dans l'ordre.

0
Ege Akpinar

Encore une autre cause possible:

Dans mon cas, j’avais une xib et j’appelais Bundle.main.loadNibNamed(... à quel moment il s’était écrasé. Tous mes IBOutlets et IBActions semblaient bien. Finalement, j'ai remarqué que la nib était en train de se charger, mais lorsque j'ai essayé d'accéder à la première (et unique) vue (nib.first), cela ne fonctionnait pas. En fait, nib.count renvoyait un très grand entier (max int?) Au lieu du 1 attendu. J'ai essayé de ré-ajouter la vue, mais toujours pas de chance.

En fin de compte, j'ai supprimé le fichier xib au complet et recommencé (mais j'ai conservé certaines vues dans mon presse-papiers afin que je puisse les coller au lieu de les recréer).

Cela a fonctionné!

0

Cela peut arriver si vous avez une table et que vous oubliez d'affecter UITableViewDelegate et UITableViewDataSource à la classe.

0
user3561494

Pour mon cas, Xcode 8.2.1 , j'avais un Map Kit View dans un contrôleur de vue. Alors je suis allé à

Phases de construction> Lier le binaire avec des bibliothèques

et ajouté MapKit.framework, alors c'était bien.

Je pense que cela s'appliquera également à d'autres points de vue nécessitant un cadre.

P.S. Exécuter sur iOS 9 m'a dit qu'il y avait un problème avec Map Kit View, alors que sur iOS 10 ne m'a rien dit!

0
Protocole

Dans mon cas, le projet Build Settings contenait des répertoires non existants pour Framework Search Paths et Library Search Paths.

0
Manuel

Dans mon cas, l'application est tombée en panne parce que je n'avais pas défini les membres cibles du storyboard.

0
fredpi