2013-04-30 5 views
30

Wenn sich eine Klasse für NSNotificationCenter Ereignisse eines bestimmten Typs anmeldet und eine andere Klasse ein Ereignis dieses Typs sendet, wird der Code im Empfänger vor (synchron) oder nach (asynchron) der Weiterleitungsklasse ausgeführt?Werden NSNotificationCenter-Ereignisse synchron oder asynchron empfangen?

Im obigen Codebeispiel wird "Hello from receiver" vor oder nach "Hello from caller" gedruckt?

+0

Werfen Sie einen Blick auf http://StackOverflow.com/Questions/1900352/what-is-nsnotification –

+0

lesen Sie den ursprünglichen Beitrag der unten Antwort .. http://StackOverflow.com/Questions/7880742/IOS-are- Methoden-aufgerufen-durch-Delegierten-und-Beobachter-ausgeführt-auf-dem-Haupt-Thread – BhushanVU

Antwort

65

Wie in der Dokumentation für NSNotificationCenter NSNotificationCenter Class Reference angegeben werden Benachrichtigungen synchron gepostet.

Ein Benachrichtigungscenter sendet Benachrichtigungen an Beobachter synchron. Mit anderen Worten, die postNotification: -Methoden werden erst zurückgegeben, wenn alle Beobachter die Benachrichtigung erhalten und verarbeitet haben. Um Benachrichtigungen asynchron zu senden, verwenden Sie NSNotificationQueue.

In einer Multithread-Anwendung werden Benachrichtigungen immer im Thread bereitgestellt, in dem die Benachrichtigung gepostet wurde. Dies ist möglicherweise nicht der Thread, in dem sich ein Beobachter registriert hat.

Ich hoffe, es hilft Ihnen.

+3

Kurze und angemessene Antwort !! –

+0

Ich verstehe nicht den "synchronen" Begriff oder Ihre Antwort ist völlig inkorrekt. Ich wollte in folgender Reihenfolge anrufen: 1) Benachrichtigung; 2) der Benachrichtigungshandler; 3) Code in demselben Block in der Benachrichtigung. Aber es heißt wie 1, 3, 2 - falsche Reihenfolge – Gargo

+0

@Gargo, wenn Sie nicht die Antwort verstehen, die nicht bedeutet, Antwort ist falsch. Das ist richtige und akzeptierte Antwort. –

Verwandte Themen