我如何通过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];