In the book, \"Cocoa Design Patterns,\" the author sometimes declares a property in the @interface as readonly:
// .h @property (readonly, copy) NSArray *shapesI
Externally the property will be readonly. While inside the class it will have both the accessor, and the setter.
The setter will not be visible by the compiler outside of the implementation(.m) file.