我在目标C中写了一个函数。 这就是我得到的:
int rndValue = (((int)arc4random()/0x100000000)*width);
timer1 = [NSTimer scheduledTimerWithTimeInterval:.01
target:self
[self performSelector:@selector(doItAgain1:)
withObject:rndValue]
userInfo:nil
repeats:YES];
选择器调用此方法并传递参数:
-(void)doItAgain1:(int)xValuex{
}
在此阶段,顶级代码会产生语法错误。 Syntax error: 'Expected ] before performSelector'
概率是多少?
最好的问候
答案 0 :(得分:2)
该行应该可以阅读
timer1 = [NSTimer scheduledTimerWithTimeInterval:.01
target:self selector:@selector(doItAgain1:)
userInfo:nil repeats:YES];
你不能用这个调用发送一个方法参数,为了做到这一点,你必须做一些事情:
NSInvocation *inv = [NSInvocation invocationWithMethodSignature:
[self methodSignatureForSelector:@selector(doItAgain1:)]];
[inv setSelector:@selector(doItAgain1:)];
[inv setTarget:self];
[inv setArgument:&rndValue atIndex:2];
timer1 = [NSTimer scheduledTimerWithTimeInterval:(NSTimeInterval).01
invocation:inv
repeats:YES];
答案 1 :(得分:1)
这样更正确:
[NSTimer scheduledTimerWithTimeInterval:.01 target:self
selector:@selector(doItAgain1:)
userInfo:[NSNumber numberWithInt:rndValue] repeats:YES];
另请注意,以这种方式调用的选择器的语法必须是:
- (void)doItAgain1:(NSTimer*)timer {
int rndValue = [timer.userInfo intValue];
...
}
无法为这样的计时器选择器指定int
参数,因此可以将其转换为NSNumber
对象。