Objective-C объявления о доступе (только для чтения, readwrite и т.д.)

В книге "Cocoa Шаблоны проектирования" автор иногда объявляет свойство в @interface как только для чтения:

// .h
@property (readonly, copy) NSArray *shapesInOrderBackToFront;

а затем добавляет безымянную категорию в файл реализации (.m) следующим образом:

// .m
@interface MYShapeEditorDocument ()
@property (readwrite, copy) NSArray *shapesInOrderBackToFront;
@end

Любая идея о том, почему? Мне непонятно, как этот подход лучше или более необходим, чем первоначально объявляя свойство "readwrite".

Ответ 1

Внешне свойство будет только для чтения. Внутри класса он будет иметь как аксессор, так и сеттер.

Сеттер не будет виден компилятором вне файла реализации (.m).