views:

619

answers:

1

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 unclear to me how this approach is better than, or more necessary than, initially declaring the property as "readwrite".

+9  A: 

Externally he 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.

Bryan McLemore
I see. Ok, thanks! That makes sense now.
RyJ
No problem, glad it's helped.
Bryan McLemore