戻り値って、こんなことかな? | demicadeのブログ

demicadeのブログ

iPhoneアプリ開発素人のメモ的なブログです。

戻り値ってこんなことなんじゃないかと思ったので、書いてみます。

例えばこれ、
※timeCountはこの前の部分で設定されているfloat値です。

NSMutableArray *motoArray = [self compareScore:timeCount];  
NSMutableArray motoArrayを作っていますよね。
このメソッド内でリリースしていいので、allocもinitもしていません。

[self compareScore:timeCount]が、arrayにならなければいけないので、
[self compareScore:timeCount]は、arrayになるようなものでないといけないですよね。

で、[self compareScore:timeCount]はというと、
[self compareScore]; と同じで、引数がtimeCountという意味になります。
では、実際のメソッドに移ります。

-(NSMutableArray *)compareScore:(float)score{

compareScoreの戻り値の型はNSMutableArrayですね、予定通りarrayが出てきました。
これで、NSMutableArray *motoArray = [self compareScore]が成立します。
で、:(float)scoreはというと:timeCountと一緒の形ですね。つまり=(イコール)です。

こうする事で、-(NSMutableArray *)compareScoreの中で、
:timeCountの値を渡して使えるようになるんですね。

中身を見て行くと、
    array = [NSMutableArray array];
     (中略)
[array replaceObjectAtIndex:i withObject:[NSNumber numberWithFloat:score]];

scoreが出てきましたね。=timeCountです。
-(NSMutableArray *)compareScoreの中で作った、
arrayのi番目のインデックスにオブジェクトとして保存しています。
※今回 replaceObjectAtIndex:i なのは無視してください(笑)※
その後、

return array;
}

returnをして、arrayを返しています。
-(NSMutableArray *)に対するお返事ですね。

-(NSMutableArray *)compareScore = array で、
:(float)score = :timeCountです。

そして元々の始まりだった、

NSMutableArray *motoArray = [self compareScore:timeCount];

ここに戻り、-(NSMutableArray *)compareScore = array の結果が、

新たな NSMutableArray *motoArray のarrayとして設定されるわけです。


こんな文法はありませんが、どんどん左に代入されていくと思うと分かりやすいでしょうか?

逆に分かりずらかったら忘れてください(笑)

NSMutableArray *motoArray = array = [self compareScore:timeCount];





この引数の使い方は、@propertyに近いですよね。

.hで、float timeCount;と宣言すれば、使えますから。

宣言しない分楽だと思えばいいんでしょうか?


参考になりましたでしょうか?