title: Are there deep design reasons for Foundation collections' inability to store nil?
body: <p>Everyone knows that Foundation collections like <code>NSArray</code>, <code>NSDictionary</code>, and <code>NSSet</code> can't store <code>nil</code> objects, and that you have to use <code>NSNull</code> instead. I'm sure if I dug into the open-source Core Foundation source code, I could even find where that's enforced.</p>
  
  <p>What I don't understand is, <em>why</em> are they designed this way? Is it purely because <code>nil</code> is used as a sentinel in some of their constructors, or is there a deeper reason for this behavior?</p>