2013/06/01

[obc]引数が2つ以上のメソッド呼び出し

朝6時前に起きて、うとうとしながらやってます。
仕事のためっていうより、知らないことが出てきたことが不満らしい。

そんなわけで、iOS開発をまだ勉強中です。


しかさんに教えてもらった本を買ってきて、iOSの勉強をやっとります。
Appleの日本語ドキュメントもなかなかよろしいが、本になってると安心するのは仕方ないか。

まだObjective-Cについては、あまり踏み込んでない。
Cっぽく、C++っぽく、JavaやC#っぽいとこもあるけど、一番近いのはC++な気がしている。
ならば、そういうサイトがあるだろうと検索すると、やはりあった。

C++プログラマ(というか自分)のためのObjective-C講座(というかメモ)

 

Objective-Cのソースファイルを見て困ったのが、「 [ ・・・] 」と、カギ括弧が多いこと。
C#のあれでもないし、もちろん添字のあれでもない。
なんだろう、うーむ・・・

と思って読み進めると、あれはメソッド呼び出しらしい。
まだ読んでいる途中だが、

   [ インスタンス  メソッド];

のような形らしい。
へー。


メソッドの宣言も、ちょっと違う。

宣言
- (void) メソッド名 {
    ・・・
}

呼出
[ インスタンス  メソッド名];

 

宣言
- (型) メソッド名 {
 ・・・
  return なんやら;
}

呼出
型変数 = [  インスタンス  メソッド名];

ここまでは、まあいい。
引数が1つなら、こうだ。

 

宣言
- (型a) メソッド名 : (型b)仮引数1 {
  ・・・
  return なんやら;
}

呼出
型変数 = [ インスタンス メソッド名 : 引数1];

これも、よいのだ。
嫌なのは、引数が2つ以上のとき。

 

宣言
- (型a) メソッド名 : (型b)仮引数1  (型c)仮引数2 {
  ・・・
  return なんやら;
}

呼出
型変数 = [ インスタンス : 引数1   仮引数2 : 引数2];

 

引数が2つ以上になると、2つ目からは仮引数名を一緒に指定するのだ。
たぶん、こういうルールなのだろう。

「引数の1番目は、仮引数名を省略する」

「省略できる」ではなく、省略する、とかか?


文字だけ読んでいてもわからないので、実際にやってみよう。

- (void)dbg :(int)a :(int)b :(int)c
{
  NSLog(@"%d, %d, "5d, a, b, c);
}
- (void)func
{
  [self dbg: 1 :2 :4];
}

 

えー、これでいいの??
読んでる説明と違うのだが・・・・。

 

誤記なのか、時代によって変わったのかが判断できん。
きびしいのぅ・・・。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。