戻り値ってこんなことなんじゃないかと思ったので、書いてみます。
例えばこれ、
※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;と宣言すれば、使えますから。
宣言しない分楽だと思えばいいんでしょうか?
参考になりましたでしょうか?