我在代码中有以下行:
#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只是一种在屏幕上显示内容以帮助测试人员的临时方法。
答案 0 :(得分:1)
提示1 :
在相关行之上,添加
#undef INACTIVITYTIMEBEFOREBAITARROWDISPATCHED
这是为了防止您在其他地方以不同方式定义该宏,并且由于双重定义现在得到了奇怪的结果。虽然我必须承认在这种情况下错误信息应该是不同的 - 我认为仍然值得一试。
提示2 :
如果不需要,请不要将预编译器宏(定义)用于常量。很少有情况下定义有意义,而给定的定义不会出现其中之一。
用适当的静态const标量替换所有这些定义;
e.g。
static const double kInactivityTimeBeforeBaitArrowDispatched 60.0;
这将导致类型安全,代码清晰,头部划痕减少。
答案 1 :(得分:0)
这不是定义的问题。这是方法的一个问题。
该方法是否包含arg列表?或者只是一个字符串。
因为看起来您正在尝试使用格式设置字符串。
试试这个
[self helpText:[NSString stringWithFormat:@"Bait arrow dispatched due to %f seconds inactivity\n",INACTIVITYTIMEBEFOREBAITARROWDISPATCHED]];
答案 2 :(得分:0)
好吧,你将 2 参数传递给-helpText:
,我认为它不是变量,所以它只需要一个参数。
看起来您正在尝试传递字符串格式,并将值放在格式说明符中。要创建一个字符串,必须将参数传递给实际接受这些参数的方法,即+[NSString stringWithFormat:]
:
NSString *text = [NSString stringWithFormat: @"Bait arrow dispatched due to %f seconds inactivity\n", INACTIVITYTIMEBEFOREBAITARROWDISPATCHED];
[self helpText: text];