他のクラスからアクセスできないようにする場合は、実装で@propertyを宣言し、クラスの匿名カテゴリを作成します。
ヘッダーファイル:
// MyClass.h
@interface MyClass : NSObject {
NSObject *_privateObject;
NSObject *_readonlyObject;
NSObject *_publicObject;
}
@property (nonatomic, retain, readonly) NSObject *readonlyObject;
@property (nonatomic, retain) NSObject *publicObject;
@end
実装:
// MyClass.m
@interface MyClass ()
@property (nonatomic, retain) NSObject *privateObject;
// Make it writable on the implementation
@property (nonatomic, retain, readwrite) NSObject *readonlyObject;
@end
@implementation MyClass
@synthesize privateObject = _privateObject;
@synthesize readonlyObject = _readonlyObject;
@synthesize publicObject = _publicObject;
これらは、3つの異なるプロパティの例です。
- privateObjectは他のクラスには表示されません。
- readonlyObjectは表示されますが、読み取り専用です。
- publicObjectは表示され、取得および設定できます。