title: Objective-C accessor declarations (readonly, readwrite, etc)
body: <p>In the book, "Cocoa Design Patterns," the author sometimes declares a property in the @interface as readonly:</p>
  
  <pre><code>// .h
  @property (readonly, copy) NSArray *shapesInOrderBackToFront;
  </code></pre>
  
  <p>and then later adds an <i>unnamed category</i> to the implementation (.m) file like this:</p>
  
  <pre><code>// .m
  @interface MYShapeEditorDocument ()
  @property (readwrite, copy) NSArray *shapesInOrderBackToFront;
  @end
  </code></pre>
  
  <p>Any idea as to why? It's unclear to me how this approach is better than, or more necessary than, initially declaring the property as "readwrite".</p>