副作用

Xcode4.4ではデフォルトのコンパイラがLLVM4.0になり、数々の拡張が成されたことは既に書いた。

一番解りやすいのは自動プロパティ(アクセサやフィールドを明示的に記述しない)の定義で@propertyと対になる@synthesizeを記述する必要がなくなったことだろう。

プロパティhogeに対応して@implementationに@synthesizeを書く必要が無い。これは実際に書いてみれば解るが、滅茶苦茶楽になる。
しかしひとつ気をつけなくてはならないことがあるのだ。今回この拡張と共に自動的に生成されるフィールド名は従来プロパティ名と同名(今回ならhoge)だったのに対して今回の拡張と共に"_プロパティ名"がフィールド名として使われるようになった。

従って以下の書き方は今回の拡張によりエラーになってしまうようなのだ。

エラーが出ないようにするには以下のようにブラケットを使ったクラシックなアクセサ記述か、ドット記法であれば明示的に自己インスタンスを参照する"self"を必ず付ける必要がある。

私は元々"self."を付ける派なので別に気にならないのだが、そうではない場合は拡張記法にプロジェクトを移行する場合は注意が必要だろう。