One of my class named Message.m is posting a notification with an object sentObject
as below
NSDictionary *sentObject = [NSDictionary dictionaryWithObjectsAndKeys:draftData.arr,@"data", nil];
//Post notification to inform a receiver to reload data
[[NSNotificationCenter defaultCenter] postNotificationName:@"reloadDuringSave" object:self userInfo:sentObject];
DraftData.m will be be the receiver to catch the notification as follow
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(dataReloaded:)
name:@"reloadDuringSave"
object:nil];
For posting notification, userInfo
can be nil
or can be an object
(like sentObject
as type of NSDictionary
in this example).
What are other params for object
in addObserver
method? Can they be
anything other than nil
, and if so what?
addObserver(forName:object:queue:using:) Adds an entry to the notification center to receive notifications that passed to the provided block.
default — This is the notification variable you can create it globally inside your class if you having more notifications. addObserver(self, — This is for the class where we are going to observer notification.
That "object" parameter to "addObserver" is an optional filter. Upon posting a notification you can set an object to the sender of the notification, and will then only be notified of that sender's events. If set to "nil" you will get all notification of this type (regardless who sent them).
You can use it to pass any object with the notification. The receiver of the notification will then be able to access that object. For example, you could implement dataReloaded
like this:
- (void)dataReloaded:(NSNotification *)notification {
NSLog(@"%@", notification.object); // this will log the object you passed in addObserver:selector:name:object:
}
It can be useful when you want to pass on data with your notification, so that the receiver of a notification can use that data too.
For anyone interested in apple's documentation. This is what it says:
notificationSender
The object whose notifications the observer wants to receive; that is, only notifications sent by this sender are delivered to the observer. If you pass nil, the notification center doesn’t use a notification’s sender to decide whether to deliver it to the observer.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With