我如何通过select器方法传递一个int值?

我想从我的select器方法传递一个int值,但select器方法只接受一个对象types参数。

 int y =0; [self performselector:@selector(tabledata:) withObject:y afterDelay:0.1]; 

方法执行在这里

 -(int)tabledata:(int)cellnumber { NSLog(@"cellnumber: %@",cellnumber); idLabel.text = [NSString stringWithFormat:@"Order Id: %@",[[records objectAtIndex:cellnumber] objectAtIndex:0]]; } 

但我没有得到确切的整数值在我的方法,我只获得id值。

最简单的解决scheme,如果你拥有目标select器,就是将int参数包装在一个NSNumber中:

 -(int)tabledata:(NSNumber *)_cellnumber { int cellnumber = [_cellnumber intValue]; .... } 

要调用这个方法,你可以使用:

 [self performselector:@selector(tabledata:) withObject:[NSNumber numberWithInt:y] afterDelay:0.1]; 

这也适用于int参数,如果您无法更改您要执行的select器的签名,这是特别有用的。

 SEL sel = @selector(tabledata:); NSMethodSignature *signature = [[self class] instanceMethodSignatureForSelector:sel]; NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; invocation.selector = sel; // note that the first argument has index 2! [invocation setArgument:&y atIndex:2]; // with delay [invocation performSelector:@selector(invokeWithTarget:) withObject:self afterDelay:0.1];