In the book, "Cocoa Design Patterns," the author sometimes declares a property in the @interface as readonly: // .h @property (readonly, copy) NSArray *shapesInOrderBackToFront; and then later adds an unnamed category to the implementation (.m) file like this: // .m @interface MYShapeEditorDocument () @property (readwrite, copy) NSArray *shapesInOrderBackToFront; @end Any idea as to why? It's uncl