Objective-Cのプロパティ
Property
Objective-C 2.0から追加された機能
- Interfaceにプロパティを設定
セッター、ゲッターメソッドなしで「@property」でセットする
@interface xxx { float value1; float value2; } @property float value1; @property float value2; @end
- implementation設定
「@synthesize」でプロパティを設定、メソッドは不要
@implementation xxx @synthesize value1; @synthesize value2; {...} @end
- Propertyのセット
ドット記法でプロパティをセットする
instance.value1 = 10.1; instance.value2 = 20.2;
- Propertyの呼び出し
ドット記法で呼び出す
NSLog(instance.value1); NSLog(instance.value2);
copy,retain,assign属性
- copy属性
文字列の場合、copyを適用したプロパティが必要
@property (copy) NSString *name;
- retain属性
対象がオブジェクトの場合、retainを適用したプロパティが必要
@property (retain) Engine *engine;
- assign属性
retainが送られない様にしたい場合使用
- nonatomic属性
マルチスレッド環境で使われ無い場合、アクセッサを少し高速にする
注にcocoa touchで使用される。
@property (nonatomic, retain) NSString *name;
readonly, readwrite属性
- 読取専用プロパティ設定
@property (readonly, copy) NSString *name; @property (readonly) float size;
- 読み書きプロパティ設定
@property (readwrite, copy) NSString *name; @property (readwrite) float size;
プロパティの名前を変える方法
- interface
@property (copy) NSString *name;
- implementation
@synthesize name = appellation;
- 呼び出しもしくはセット方法
self.name = @"Car"; self.appellation = @"Car";