Wenn ich eine Push-Benachrichtigung erhalten, postNotificaionName ich über NSNotificationCenter (aus dem AppDelegate Verfahren unten):NSNotification Posting, wenn Push-Crash-Empfang
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
playSoundWithUserInfo(userInfo)
NSNotificationCenter.defaultCenter().postNotificationName(kNotifPushReceived, object: nil)
}
ich einen meiner Ansicht-Controller ein Beobachter für diese Meldung mache:
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(retrieveUsersAndSetData(_:)), name: kNotifPushReceived, object: nil
}
func retrieveUsersAndSetData(completed : (() -> Void)?) {
Friendship.retrieveFriendshipsForUser(backendless.userService.currentUser, includeGroups: false) { (friendships, fault) -> Void in
guard let friendships = friendships else { return }
self.friendships = friendships
self.tableView.reloadData()
}
}
die meiste Zeit ich eine Push-Benachrichtigung erhalten, erhalte ich einen Absturz in der AppDelegate wo postNotificationName() aufgerufen wird:
Der Absturz liest:
Gewinde 1: EXC_BAD_ACCESS (code = 1, Adresse = 0x10070)
Jetzt sind die meisten Antworten, die ich gelesen habe, dass für dieses Problem ähnlich scheinen lassen vermuten, dass ein Das Objekt, das zum Beobachter gemacht wurde, wurde nie richtig freigegeben, aber ich glaube nicht, dass dies der Fall ist, weil dies derzeit der einzige View-Controller in der App ist, und ich implementiere das Folgende vom View-Controller, der der Beobachter ist die Benachrichtigung:
deinit {
NSNotificationCenter.defaultCenter().removeObserver(self)
}
Alles in allem kann ich nicht herausfinden, warum dieser Absturz die meiste Zeit auftritt, wenn ich die Push-Benachrichtigung im App-Delegate erhalte und dann meine NSNotification poste.
einzige Sache, auf die ich zeigen kann, ist kNotifPushReceived möglicherweise Null. –
@GauravPal hat es definitiv einen String-Wert. Ich habe seitdem den Code, der in der Schließung des Selektors meines Beobachters auf dem Haupt-Thread war, und es scheint bis jetzt stabil – vikzilla