Apple-Dokumentation ist vage, und es heißt nur, dass in der Regel würde ein Programmierer nicht neu erstellen müssen:
Jeder läuft Cocoa Programm verfügt über ein Standard-Benachrichtigungscenter. In der Regel erstellen Sie keine eigenen. Ein NSNotificationCenter-Objekt kann Benachrichtigungen nur innerhalb eines einzelnen Programms bereitstellen.
Volle Quelle: NSNotificationCenter documentation.
Jedes Benachrichtigungscenter kann jedoch ein Netzwerk von Benachrichtigungen verwalten, die sich nach Name und Objekt unterscheiden. Wenn Sie einen Beobachter hinzufügen rufen Sie in der Regel das Verfahren in irgendeiner Weise wie folgt aus:
[center addObserver: self selector: @selector(observe:) name: @"observe" object: someObject];
Und wenn Sie eine Benachrichtigung hinterlassen können Sie das Objekt angeben:
[center postNotificationName: @"observe" object: someObject];
Auf diese Weise sagen, dass man N-Namen verwenden und M-Objekte können Sie N * M Distinguished Notifications behandeln. Ich denke, es besteht keine Notwendigkeit, zwei Benachrichtigungszentren zu verwenden. Theoretisch, wenn Sie alle Namen beendet haben, können Sie einen anderen mit alloc + init erstellen, aber ich sehe kaum, wie es tatsächlich nützlich sein kann.
Denken Sie auch daran, dass das Benachrichtigungszentrum oft verwendet wird, wenn zwei Objekte keinen direkten Zeiger zueinander haben (sonst warum nicht einfach eine Methode aufrufen?), Um komplizierte Bindungen zu vermeiden (besonders wenn Sie sie verwenden) viele XIB-Dateien), so dass es sehr praktisch ist, ein einzigartiges Notification Center-Objekt zu haben.
Wenn Sie stattdessen ein Notification Center mit allot + init verwenden, müssen Sie sicherstellen, dass alle kommunizierenden Objekte einen Zeiger auf dieses Benachrichtigungszentrum haben, was zu einer gewissen Komplexität führen würde. Die gesamte Stromversorgung des Benachrichtigungszentrums wäre verschwendet.
Legit Frage, ich habe immer * defaultCenter * ohne es zu kümmern. –