[self.window makeKeyAndVisible];
みたいにプロパティが使われている。
これを直接インスタンス変数に変えてみようとすると、あれ? _windowがない。というか、windowの@syznthesizeがない。かといって
[window makeKeyAndVisible];
だとエラーになる。まさか、
[_window makeKeyAndVisible];
だと通るの?
通るんですよお客さん。
がしかし、全部のプロパティが@synthesizeが無いわけでもない。試しに1個消してみると、undefinedになる。えーまさかのwindowだけ? なわけないよないくらなんでも。論理が通らない。
何だろう?と暫し悩み、ググるも、色よい答えが見つからず、xodeの4.4辺りから@synthesizeが省略できる、という話は見かけるものの、そこまで。
でよーくコードを見ると、window以外のプロパティには readonly が付いている。
「これ?」
はい、それです。readonlyを取ると、他のプロパティも@synthesizeなしでOK。もちろんインスタンス変数名は「_プロパティ名」となる。
readonlyを付けると、自分の見間違えで、設定するところだけエラーになるのかと思ったが、間違いなく参照個所すべてが"undecleared"になる。
変なの。
0 件のコメント:
コメントを投稿