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

如果不需要,不要对常量使用预编译器宏(定义)。在少数情况下,定义是有意义的,而给定的却不是其中之一。

用适当的静态常量标量替换所有这些定义;

例如

static const double kInactivityTimeBeforeBaitArrowDispatched 60.0;

这将带来类型安全、可读性好的代码和更少的头部划痕。

于 2012-12-27T23:14:52.307 回答
0

它不是定义的问题。这是方法的问题。

该方法是否包含 arg 列表?或者只是一个字符串。

因为看起来您正在尝试使用格式设置字符串。

试试这个

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

好吧,你传递了2 个参数-helpText:,我打赌它不是可变参数,所以它只需要一个参数。

看起来您正在尝试传递字符串格式和要放在格式说明符中的值。要从中生成字符串,您必须将参数传递给实际采用此类参数的方法,即+[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 回答