Do we have to send `removeObserver:` explicitly for objects that have been added as observers to an `NSNotificationCenter` before?

I am bit confused and unable to find the exact answer for this. 

Please provide me in detail, about this including why we need to removeObserver explicitly, and why don't compiler put it implicitly in class/application?