2011年3月10日木曜日

インスタンス変数へのアクセス

appleのサンプルで使用される構造体ポインタ演算子( または、アロー演算子: -> )についてのメモ。

プロパティへのアクセス方法
ドット構文を使うと、構造体の要素にアクセスするときと同じパターンを使ってプロパティにアクセスできます。*1

ドット構文は単なる「シンタックスシュガー」であり、コンパイラによってアクセサメソッドの呼び出しに変換されます(そのため実際にはインスタンス変数に直接的にアクセスするわけではありません)。*1

以下のような理解でいいのか?
- プロパティには直接アクセス出来ない。
- しかし、構造体ポインタ演算子(->)を使うと、アクセサメソッドを経由しないで直接インスタンス変数にアクセスすることが出来る。

インスタンス変数がレシーバでないオブジェクトに属する場合は、オブジェクトの型を静的な型定義によってコンパイラに明示しなければなりません。静的に型定義したオブジェクトのインスタンス変数を参照するには、構造体ポインタ演算子(->)を使用します。*2

参照:
*1
objective-c 2.0 プログラミング言語 -> プロパティ -> 概要 -> プロパティへのアクセス
*2
objective-c 2.0 プログラミング言語 -> クラスの定義 -> クラス実装 -> インスタンス変数の有効範囲