2012-03-27 12 views
0

Ich empfange noch ObjC und ich versuche nur, um sicherzustellen, dass ich das Konzept der NSNotification s verstehen voll:Klärung der genauen Funktion von NSNotificationCenter

Die [NSNotificationCenter defaultCenter] ist ein stationäres Objekt, das ist nicht die Sender oder die Empfänger. Er hat lediglich Routen ein NSNotification, aber in keiner Weise oder Form behandelt das Ereignis (Standardeinstellung).

Ist das korrekt?

Theorie:
Würde die eine AppDelegate zu Push eine Benachrichtigung an die defaultCenter und etwas weiter in der Antwortkette/Anzeigeliste ermöglichen (z.B. UITableViewCell) Pick up auf der Aktion?

+0

+1 für die Antwort von @ yuji, nur ein paar Punkte auf Terminologie. + defaultCenter ist kein 'stationäres Objekt' (zumindest weiß ich nicht, was ein stationäres Objekt ist). Es ist wie eine globale Pinnwand (pro App), an die Nachrichten gesendet werden können. Die Responder-Kette ist an der Behandlung von UI-Ereignissen/Aktionen beteiligt. Es hat nichts mit Benachrichtigungen zu tun. Auch Checkout NSNotificationQueue .. – hooleyhoop

+0

Ich denke, er meint, es ist ein Singleton, was es ist. –

+0

@RobKeniger - ich weiß, was er meinte, aber das macht es nicht gut, sich eigene Namen zu machen. Und, nein, ist es nicht :) – hooleyhoop

Antwort

3

Genau. NSNotificationCenter ist nur die Clearingstelle für die Benachrichtigungen. Es verfolgt alle Objekte, die jede Benachrichtigung beobachten, so dass es bei der Veröffentlichung einer Benachrichtigung an alle richtigen Beobachter weitergeleitet werden kann.

Und ja, kein Grund, warum Ihre AppDelegate kann keine Benachrichtigung, die von Dingen wie eine UITableViewCell abgeholt wird. NSNotifications sind ideal für Situationen, in denen ein Objekt Daten an andere Objekte senden muss oder ihnen sagen muss, dass etwas passiert ist, und Sie nicht wissen, was die Empfänger bis zur Laufzeit sein sollen.