1

コードに次の行があります。

#define INACTIVITYTIMEBEFOREBAITARROWDISPATCHED 60.0

この行に次のようなエラーが表示されます。Too many arguments to method call, expected 1, have 2

最大長を超えましたか? もしそうなら、最大の長さはどれくらいですか?いずれにせよ、実際のメッセージはばかげているようです。

リクエストごとのコンテキストは次のとおりです。

#define VITALITYSECONDS 40.0
#define MINIMUMSCALEFACTOR 0.10
#define MINIMUMSPEED 2.0
#define INACTIVITYTIMEBEFOREBAITARROWDISPATCHED 60.0

#pragma mark - Angle and Distance Functions

-(float)normalizeAngle:(float)angle
{
   float answer;
   // Take an angle and return a value from -pi to pi
   // To do this, we first add pi, then divide by 2pi, then take fractional part, then multiply by 2pi then subtract pi.
   answer = angle + M_PI;
   answer = answer/(2*M_PI);
   answer = answer - floor(answer);
   answer = answer * 2 * M_PI;
   answer = answer - M_PI;
   return answer;
}

完全を期すために、問題のある行を次に示します。

[self helpText:@"Bait arrow dispatched due to %f seconds inactivity\n",INACTIVITYTIMEBEFOREBAITARROWDISPATCHED];

そして、ここに修正版があります:

[self helpText:[NSString stringWithFormat:@"Bait arrow dispatched due to %f seconds inactivity\n",INACTIVITYTIMEBEFOREBAITARROWDISPATCHED]];

そのメソッドの宣言は次のとおりです。

-(void)helpText:(NSString *)text

メソッド helpText は、テスターを支援するために画面に表示するための一時的なメソッドです。

4

3 に答える 3

1

ヒント1

問題の行の上に、追加します

#undef INACTIVITYTIMEBEFOREBAITARROWDISPATCHED

これは、そのマクロを別の場所で別の方法で定義し、二重定義のために奇妙な結果が得られる場合に備えています。その場合、エラーメッセージは異なるはずだと認めなければなりませんが、それでも一見の価値があると思います。

ヒント2

必要がない場合は、定数にプリコンパイラマクロ(定義)を使用しないでください。定義が理にかなっていて、与えられたものがそれらの1つに表示されない場合はほとんどありません。

これらの定義をすべて適切な静的定数スカラーに置き換えます。

例えば

static const double kInactivityTimeBeforeBaitArrowDispatched 60.0;

これにより、型の安全性、読みやすいコード、頭の傷が少なくなります。

于 2012-12-27T23:14:52.307 に答える
0

定義の問題ではありません。それはメソッドの問題です。

メソッドは引数リストを取りますか?または単に文字列。

フォーマットを使用して文字列を設定しようとしているように見えるためです。

これを試してみてください

[self helpText:[NSString stringWithFormat:@"Bait arrow dispatched due to %f seconds inactivity\n",INACTIVITYTIMEBEFOREBAITARROWDISPATCHED]];
于 2012-12-27T23:41:51.293 に答える
0

ええと、あなたは2つの引数を渡しています-helpText:が、可変個引数ではないので、1つの引数しか取りません。

文字列形式と形式指定子に配置する値を渡そうとしているようです。それから文字列を作成するには、実際にそのような引数を取るメソッドに引数を渡す必要があります+[NSString stringWithFormat:]

NSString *text = [NSString stringWithFormat: @"Bait arrow dispatched due to %f seconds inactivity\n", INACTIVITYTIMEBEFOREBAITARROWDISPATCHED];
[self helpText: text];
于 2012-12-27T23:41:58.673 に答える