我是否使用withObject:?如果是这样,我可以通过,说一个NSNumber吗?
它如何出现在方法的签名中?
- (void)methodName:(NSTimer *)timer withObject:(NSNumber *)value {}
答案 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
类。