2017-07-04 1 views
0

je le délégué App suivante pour une application iOS dans Xcode 8.3:bloque iOS AppDelegate lors de l'ajout didReceiveRemoteNotification

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate { 
    var window: UIWindow? 

    func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 
    } 
} 

Quand je commence mon application soit dans le simulateur ou sur un appareil, il se bloque avec le message suivant :

2017-07-04 21:26:04.284336+0200 MyApp[352:25788] -[NSTaggedPointerString containsObject:]: unrecognized selector sent to instance 0xa00000070696f764 
2017-07-04 21:26:04.284569+0200 MyApp[352:25788] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '- [NSTaggedPointerString containsObject:]: unrecognized selector sent to instance 0xa00000070696f764' 
*** First throw call stack: 
(0x188baefe0 0x187610538 0x188bb5ef4 0x188bb2f54 0x188aaed4c 0x18ef7d030 0x18ef630f4 0x18ef77d18 0x18ef60474 0x18a757884 0x18a7576f0 0x18a757aa0 0x188b5d42c 0x188b5cd9c 0x188b5a9a8 0x188a8ada4 0x18ed4a384 0x18ed45058 0x100106fc8 0x187a9959c) 
libc++abi.dylib: terminating with uncaught exception of type NSException 

Dans le simulateur, il est un message d'erreur légèrement différente:

2017-07-04 21:30:10.379 MyApp[55965:1127208] -[__NSCFString containsObject:]: unrecognized selector sent to instance 0x608000028d60 
2017-07-04 21:30:10.383 MyApp[55965:1127208] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString containsObject:]: unrecognized selector sent to instance 0x608000028d60' 

La suppression de la méthode application(:didReceiveRemoteNotification) fait disparaître l'incident.

Quelqu'un a-t-il la moindre idée de ce qui se passe?

+0

Le message d'erreur indique quelque part qu'une chaîne est passée où un type de collection est attendu. – vadian

+0

Vous n'avez pas envoyé de code complet. L'incident doit se produire à l'intérieur de la méthode didReceiveRemoteNotification. – adev

+0

@adev Il s'agit du code entier de AppDelegate (oui, 'didReceiveRemoteNotification' est vide et il se bloque toujours). – Remko

Répondre

0

Vous avez probablement un framework tiers qui pose problème ici. Pour un, vous avez posté du code Swift, mais vous obtenez un message d'erreur Objective-C. Il est probable qu'une bibliothèque que vous utilisez s'inscrive pour gérer les notifications. Ensuite, didReceiveRemoteNotification doit toujours appeler completionHandler avant de quitter. Une fonction vide entraînera donc des problèmes.

Vous devez appeler completionHandler avec un paramètre soit .newData, .noData ou .failed en fonction de vos résultats.

0

Compris le problème: mon Info.plist avait des «modes d'arrière-plan» définis sur une chaîne au lieu d'un tableau de modes. Correction qui corrige le crash.