title: What type of reference does NSNotificationCenter keep for 'observer's & 'object's?
body: <p>Can anyone clarify/elucidate the situation with respect to <code>-[NSNotificationCenter addObserver:selector:name:object:]</code>?</p>
  
  <ul>
  <li><p>What types of references are kept by the notification center of the 'observer' and 'object' arguments?</p></li>
  <li><p>What are the best practices for removing observers from the notification center?</p></li>
  <li><p>What are the special concerns for multi-threaded applications, especially with respect to the 'object' argument?</p></li>
  <li><p>What are the differences in behavior of this method in GC and non-GC environments?</p></li>
  <li><p>Are the any significant differences (from a client perspective) between mobile and desktop environments in this method's behavior?</p></li>
  </ul>
  
  <p>Also, any pointers to existing articles which cover this would be greatly appreciated. I Googled, but was surprised to find little <em>in-depth</em> discussion of these issues (although maybe I didn't use the right magic keywords).</p>