2009-12-09 17 views
17

En el libro, "Patrones de Diseño Cacao", el autor veces declara una propiedad en el @interface como de sólo lectura:Objective-C declaraciones de descriptor de acceso (sólo lectura, ReadWrite, etc)

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

y luego añade una Categoría sin a la aplicación (.m) archivo de la siguiente manera:

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

Alguna idea de por qué? No me queda claro cómo este enfoque es mejor o más necesario que, inicialmente, declarar la propiedad como "readwrite".

Respuesta

40

Externamente, la propiedad será de solo lectura. Mientras esté dentro de la clase tendrá tanto el acceso como el setter.

El compilador no podrá ver el colocador fuera del archivo de implementación (.m).

+0

Ya veo. ¡Vale gracias! Eso tiene sentido ahora. – RyJ

+0

No hay problema, me alegro de que haya sido de ayuda. –

+1

¿Qué pasa si todo lo anterior es igual, pero MYShapeEditorDocument se extiende a MYShapeEditorDocumentExtended. ¿MYShapeEditorDocumentExtended todavía tiene el mismo acceso de lectura externamente y readwrite internamente para la clase MYShapeEditorDocumentExtended? – jdog

Cuestiones relacionadas