2009-12-09 20 views
17

、「Cocoaのデザインパターン、」著者は時々、読み取り専用として@interfaceでプロパティを宣言します。Objective-Cのアクセサ(読み取り専用、読み書きなど)を宣言

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

し、後で追加されます実装(.M)へ無名のカテゴリは、このようなファイル:

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

任意のアイデアを理由を?このアプローチが「readwrite」として最初にプロパティを宣言するよりも優れているか、必要以上に必要であるかは私には不明です。

答えて

40

外部的にプロパティは読み取り専用です。クラスの中にはアクセサとセッターの両方があります。

セッターは、実装(.m)ファイル以外のコンパイラでは表示されません。

+0

です。さて、ありがとう!それは今意味がある。 – RyJ

+0

問題なく、うれしいです。 –

+1

上記のすべてが同じでも、MYShapeEditorDocumentがMYShapeEditorDocumentExtendedに拡張された場合はどうなりますか? MYShapeEditorDocumentExtendedクラスは外部から同じ読み取りアクセスを持ち、内部的にreadwriteを実行しますか? – jdog

関連する問題