title: When to use NSNotificationCenter
body: <p>I want to have multiple observers on multiple events of a single object (1-to-N relationship).</p>
  
  <p>A mechanism to achieve this task is provided by the <a href="https://developer.apple.com/library/ios/#documentation/Cocoa/Reference/Foundation/Classes/nsnotificationcenter_Class/Reference/Reference.html" rel="noreferrer"><code>NSNotificationCenter</code></a>. The mechanism looks pretty overkill when used for my problem.</p>
  
  <p>How I would do it manually without the use of <code>NSNotificationCenter</code>:</p>
  
  <pre><code>- (void)addDelegate:(id&lt;DelegateProtocol&gt;)delegate;
  - (void)removeDelegate:(id&lt;DelegateProtocol&gt;)delegate;
  </code></pre>
  
  <p>to add and remove observers from my object. </p>
  
  <pre><code>- (void)someEventFired:(NSObject&lt;NSCopying&gt; *)eventData
  {
      for (id delegate in delegates) {
          NSObject *data = [eventData copy];
          [delegate someEventFired:data];
      }
  }
  </code></pre>
  
  <p>This mechanism is straight-forward and simple to implement without the objects having to share additional strings.</p>
  
  <ul>
  <li>Is there an official pattern for 1-to-N delegates (like C# events) in an iOS framework besides the <code>NSNotificationCenter</code>?</li>
  <li>When should the <code>NSNotificationCenter</code> be used and when not?</li>
  <li>When should an implementation like the one I am suggesting here be used and when not?</li>
  </ul>