たぶんこれであってる、objective-cのメソッドの作り方
objective-cのメソッドの複雑さがさっぱり理解できずに
引数わたしもままならない状態でアプリを奇跡的につくっていたんだが
最近やっとこ理解できてきたので、この時点でわかっているであろうことをつらつらと・・
よく値を設定する際に
[scrollView setZoomScale:1.3 animated:NO];
という感じで、値をセットすることがあるが
普通の感覚だと
scrollview.zoomScale = 1.3;
とやるのが当たり前だと思っていて、この二つの差がよくわからなかったが
たぶん、おおよそどちらも一緒。
で、この時のsetZoomScaleは多分、UIScrollViewのメソッドで
zoomScaleに値をセットするためだけに存在する。(ウソかもしれないのは話半分でw)
で、その後のanimatedは何かという話になるが
animatedの仕組みは別にして、animatedという引数にNOをセットしてる。
素直にみれば、そういうこと。終了w
いやいや、、
まあ、既存のクラスやメソッドはそれでいいんだわ。
決められたようにセットしておけば動くんだからね。
で、本題。
独自でメソッドを作るにはどうする?っていう話。
先のsetZoomScaleがメソッド名でanimatedは引数名・・・
これに気がつけばだいぶ話は早いんだが、ググってもそういう話が全く出てこず
もしくは、この話に行き着く調べ方がまったくわからんんすよ・・
たとえば、メソッドに3つの値を渡したいとします。
phpなら
function aaa(bbb,ccc,ddd) { } aaa(1,2,3);
超簡単。(こういうのが基本的になってる脳なのでw)
で、objective-cだと、
.hの@interface{}の後にプロトタイプ宣言(ってobjective-cでもいうのかな?、、調べないとw)
-(id) aaa:(NSInteger *) bbb set_ccc:(NSInteger *) ccc set_ddd:(NSInteger *) ddd ;
.mにメソッドを追加して
-(id) aaa:(NSInteger *) bbb set_ccc:(NSInteger *) ccc set_ddd:(NSInteger *) ddd { NSLog(@"%d %d %d",bbb,ccc,ddd); }
どこかでよびだす。
[self aaa:1 set_ccc:2 set_ddd:3 ];
以上、メソッドの作り方、使い方。
これでいいはず。自分のところでは動いてるw
(要するにこれ以上解説できる能力が今は(当分?)無いw)
わざとメソッド名と引数名や引数に違い出してみたが、わかりやすく見えただろうか?
メソッドに値を渡すときの違いが微妙なイメージがあるから
本当にわかりにくく、悩みまくってたが、徐々に理解ができてきた・・・
こんだけのことだがわからなかったのは、頭が固いのかなぁ?とかw