4

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

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

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

3 回答 3

10

You can use an NSArray object or NSDictionary which encapsulates multiple dataobjects into one! In example:

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];
}
于 2013-03-14T23:25:47.763 回答
4

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

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

于 2013-03-14T23:19:30.873 回答
0

你不能。但是,您可以传递一个NSDictionary, 到/从中您可以打包和提取多个对象。

另外,看看NSInvocation课堂。

于 2013-03-14T23:12:07.977 回答