Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Objective-C accessor declarations (readonly, readwrite, etc)

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".

like image 424
RyJ Avatar asked Dec 09 '09 20:12

RyJ


1 Answers

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.

like image 61
Bryan McLemore Avatar answered Oct 03 '22 14:10

Bryan McLemore