2016-04-13 5 views
0
[[NSNotificationCenter defaultCenter] postNotificationName:@"TapNewProduct" object:self.productID]; 

(oder)bessere Art und Weise Daten mit userinfo NSNotificationCenter in iOS

NSDictionary *dict = @{@"productID":self.productID}; 

[[NSNotificationCenter defaultCenter] postNotificationName:@"TapNewProduct" object:nil userInfo:dict]; 

Welche bessere Methode von oben zwei ist?

+0

Ihre Frage ist nicht klar, so dass Sie fragen müssen, was Sie genau machen wollen. – user3182143

Antwort

0

In beiden Methoden übergeben Sie sind Gonna gleiche Leistung erhalten. Sie holen das Objekt mit notification.object ab. aber in diesem ist

[[NSNotificationCenter defaultCenter] postNotificationName:@"TapNewProduct" object:self.productID]; 

es keine Notwendigkeit, ein Wörterbuch zu erstellen. Es kann den Code reduzieren.

2

Ihre erste Option missbraucht den Parameter 'sender' der Benachrichtigung, weil es einfach ist. Es wird funktionieren, aber es ist nicht korrekt. Die Idee mit diesem Parameter ist, dass Sie damit die empfangenen Benachrichtigungen filtern können. Wenn Sie es so verwenden, dann gut, aber es ist nicht für die Weitergabe von Benutzerinformationen.

Also, die zweite Option ist die richtige.

Stellen Sie sich vor, jemand anderes würde in Zukunft bei Ihrem Projekt helfen - je mehr Ihr Code den Standards entspricht, desto einfacher wird es für sie sein, Ihnen zu helfen.

+0

Das ist die richtige Antwort! Gut gesagt. –

0

postNotificationName:object: Methode ruft postNotificationName:object:userInfo: mit einem userInfo Argument von nil auf. Also gibt es im Grunde keinen Grund zu streiten, welcher besser ist als der andere.