2012年6月27日水曜日

[iOS]代入してから変更する理由

最初のころ、viewの位置を動かすときなど、
view.frame.orign.x=100
みたいにやって変更できないことに悩んだ。

以下のようにやるとうまくいく、
CGRect rect=view.frame
rect.origin.x=100.0;
view.fame=rect;

理由を考えずにいたが、考えたら答えがすぐ出て来なかったのでここに書いておきます。

CGRect rect=view.frame
ができていることから、
view.frameがCGRectのコピーを返していることがわかる。

コピー origin.x にアクセスして値を変えてもview.frame自体の値が
変わるわけがないというもっともな答えにいきついた。

CGRectが構造体なのでもっともといえば、もっともな答えでした。