インスタンス変数、プロパティ、メソッド

普段はもっぱらperlだったせいもあり、なかなかobjective-cの文法がアタマに入ってこないので整理してみる。

オブジェクト指向

  • 「もの」として識別できる
  • 状態=属性を持つ
  • 他のオブジェクトにメッセージを送ることができる
  • メッセージを具体的にどう処理するかはオブジェクトが知っている(隠蔽されている)

インスタンス変数

オブジェクトの状態を表現する。クラス内からは自由にアクセスできるが、外からは隠蔽されアクセスができない。ヘッダファイルで宣言する。

メッセージ

オブジェクトに対する指示。実装の観点からはメソッドと呼ばれる。

@interface  Person : NSObject 
{
    NSString *name;
}

- (NSString *) name;
- (void) setName: (NSString *) str;
@end
@implementation Person
- (NSString *) name {
  return name;
}

- (void) setName:(NSString *) str {
  name = str;
}
@end

プロパティ

外部からアクセスできるオブジェクトの属性。インスタンス変数 + メソッドでも実装できるが、宣言プロパティ(declared property)機能を使うとよい。

@interface Person : NSObject
{
   NSString *name;
}
@property NSString *name;
@end
@implementation Person
@synthesize name;
@end