如何在performSelector:方法中使用多个参数?

时间:2013-03-14 23:09:50

标签: ios objective-c ios5 ios6

我是否使用withObject:?如果是这样,我可以通过,说一个NSNumber吗?

它如何出现在方法的签名中?

- (void)methodName:(NSTimer *)timer withObject:(NSNumber *)value {}

3 个答案:

答案 0 :(得分:10)

您可以使用NSArray对象或NSDictionary将多个数据对象封装成一个!例如:

NSArray * myDataArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:0], [NSNumber numberWithInt:2],@"A String", nil];

[self performSelector:@selector(doStuff:) withObject:myDataArray afterDelay:1.0];

-(void)doStuff:(NSArray *)array{
   NSNumber * myNumber = [array objectAtIndex:0];
   NSNumber * myNumber2 = [array objectAtIndex:1];
   NSString * myString = [array objectAtIndex:2];
}

答案 1 :(得分:4)

您可以使用performSelector:withObject:withObject:协议中声明的NSObject直接传递最多两个参数。

使用您的示例,选择器将为@selector(methodName:withObject:)

答案 2 :(得分:0)

你做不到。但是,您可以传递NSDictionary,从中可以打包并提取多个对象。

另外,请查看NSInvocation类。