Frage

Gibt es irgendwelche Rennen Probleme Zustand, wenn NSNotifications in einem einzigen Faden? Hier ist ein Beispiel-Methode:

- (void) playerToggled: (NSNotification *) notification {
if (timerPane.playing && ! timerPane.paused) {
    [playerPane toggleCurrentPlayer];
    [timerPane toggleTimer];
    [mainPane playerToggled];
}

}

Die ersten beiden Anrufe nach der Bedingung NSNotifications auslösen, die durch mainPane empfangen werden. Ist mainPane garantiert die playerToggled Nachricht nach dieser Benachrichtigung erhalten? Ich würde sagen, dass dieser Code scheint zu funktionieren wie gewünscht (playerToggled immer zuletzt ausgeführt wird). Aber ich bin nicht sicher, welche Timing-Probleme gibt es um Benachrichtigungen und ich kann nicht eine bestimmte Antwort finden.

War es hilfreich?

Lösung

Ich bin nicht ganz sicher, was du meinst, aber ich denke, das wird hilfreich sein für Sie:

http://developer.apple.com/iphone/library/documentation/Cocoa/Conceptual/Notifications/Articles/NotificationQueues.html#//apple_ref/doc/uid/20000217

Gerade dieser Teil: Mit Hilfe des NSNotificationCenter des postNotification: Verfahren und seine Varianten können Sie eine Benachrichtigung an eine Benachrichtigung Zentrum stellen. Allerdings ist der Aufruf der Methode synchron:., Bevor das Posting Objekt seines Ausführungs-Thread wieder aufgenommen werden kann, muss er warten, bis das Notification Center die Meldung an alle Beobachter und kehrt entsendet

Andere Tipps

Es sind keine Rennbedingungen zu erwarten. Neben Dan Donaldson Antwort, hier ist ein weiteres Zitat aus der Dokumentation für NSNotificationCenter:

  

Eine Benachrichtigungszentrum liefert Mitteilungen an Beobachter synchron. Mit anderen Worten, die postNotification: kehren Methoden erst alle Beobachter erhalten haben und die Meldung bearbeitet. So senden Sie Mitteilungen asynchron NSNotificationQueue verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top