Q:

Why NSNotification third argument is often object:nil?

I can't see explanation of 3rd argument object in apple doc https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html
In all examples like this one How to create a class to send and receive events through NSNotificationCenter in Objective-C? it is nil 
Nobody explains it : so why object:nil ?
When is it not nil ?

A:

It is not nil when you are watching a certain object.
Scenario:  You have two objects that each fire events through NSNotificationCenter.  You only want to receive the events for objectA.
Solution:  Subscribe via NSNotificationCenter and pass in objectA as the object parameter.

A:

It's not nil when you need to know which object posted notification. Take a look at -(void)addObserver:(id)notificationObserver selector:(SEL)notificationSelector name:(NSString *)notificationName object:(id)notificationSender
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.
(from the same NSNotificationCenter reference you linked)

