title: NSCoding class with properties that may not implement NSCoding
body: <p>What is the proper way to handle this situation?</p>
  
  <p>I want to implement NSCoding in my class Foo, but it has one generic property called bar of type "id".</p>
  
  <pre><code>@interface Foo : NSObject &lt;NSCoding&gt; {
      id bar;
  }
  
  @property (nonatomic, retain) id bar;
  
  @end
  </code></pre>
  
  <p>If that property doesn't happen to implement NSCoding, I don't want to encode an incomplete representation of my object, so how do I fail gracefully (keeping in mind that my object may be being encoded as part of a larger graph)?</p>
  
  <p>Classes like NSDictionary have no requirement that their contents implement NSCoding, and yet they do, so there must be a way to handle this case?</p>