¿Cómo puedo pasar un valor int a través de un método selector?

Quiero pasar un valor int desde mi método selector, pero el método selector solo toma un parámetro tipo de object.

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

La ejecución del método está aquí

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

pero no obtengo valor integer exacto en mi método, solo obtengo el valor de ID.

La solución más fácil, si usted es el propietario del selector de destino, es envolver el argumento int en un NSNumber:

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

Para llamar a este método, usaría:

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

Esto también funciona para un parámetro int , que es especialmente útil, si no puede cambiar la firma del selector que desea realizar.

 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];