title: Which is a better way to remove Notification observer
body: <p>I usually use NSNotification like the sample below:</p>
  
  <p>In viewDidLoad:</p>
  
  <pre><code>[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(foo:) name:kName1 object:nil];
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(bar:) name:kName2 object:nil];
  </code></pre>
  
  <p>In viewDidUnload and dealloc:</p>
  
  <pre><code>[[NSNotificationCenter defaultCenter] removeObserver:self];
  </code></pre>
  
  <p>But a friend told me that I should not use <code>[[NSNotificationCenter defaultCenter] removeObserver:self];</code> because it will remove all the observers including the super class's . He suggested me to use the following code to remove observer one by one.</p>
  
  <pre><code>[[NSNotificationCenter defaultCenter] removeObserver:self name:kName1 object:nil];
  [[NSNotificationCenter defaultCenter] removeObserver:self name:kName2 object:nil];
  </code></pre>
  
  <p>I've checked the ASIHttpRequest library's code ( <a href="https://github.com/pokeb/asi-http-request" rel="noreferrer">https://github.com/pokeb/asi-http-request</a> ). It follows my friends' suggestion. </p>
  
  <p>I want to know if my friend is right or not? In my opinion, since the current instance will be unload or dealloc, the super class's notification is also useless. And is there any system UIViewController subclass use notification?</p>