2013/06/17

[obc]@propertyはセッター/ゲッターを作ってくれる

@propertyは自動的にセッター(setter)/ゲッター(getter)を作ってくれるそうだ。
入門書だけ読んでたら、あやうくスルーするところだった。

基本的には、こうらしい。

  • @property 型 propertyName;
  • ゲッター : propertyName
  • セッター : setPropertyName:(型)
  • メンバ変数 : _propertyName

プロパティ宣言した名前とゲッターが同じになるけれど、メンバ変数は違うんだ。
だから、selfをつけないとうまくアクセスできなかったのだ。

 

それはいいとして、気になっているのは@synthesizeだ。
ネットでなんとなく読んでいる限りでは、@synthesizeしないとセッターやゲッターを作ってくれない、という風に読んでいたのだ。
しかしAppleのドキュメントを読むと、@synthesizeを使うのは、

  • プロパティのメンバ変数名を規定の名前以外にしたい場合
  • readwriteのプロパティに対して自前でセッター/ゲッターを実装したが、メンバ変数がほしい場合
  • readonlyのプロパティに対して自前でゲッターを実装したが、メンバ変数が欲しい場合

に使うものだそうだ。

 

あー、今日は時間切れ。
おやすみなさい。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。