如何通过performSelector传递数字?

时间:2012-12-06 20:04:41

标签: objective-c ios

我必须将number(int)传递给我的下一个方法,并且我尝试使用下一个代码,但没有成功:

int myNumber = 45;
[self performSelector:@selector(startNewThing) withObject:myNumber afterDelay:0.5f];

如何通过performSelector传递数字?

3 个答案:

答案 0 :(得分:5)

以下是我对您的代码段所做的更改:

NSNumber *myNumber = [NSNumber numberWithInteger:45];
[self performSelector:@selector(startNewThing:) withObject:myNumber afterDelay:0.5f];

请注意,我在-startNewThing之后放了一个冒号。这样,该方法可以接受myNumber作为参数。 (这假设-startNewThing:确实需要参数。)由于我们已将myNumber从标量更改为对象,因此您需要对-startNewThing:进行适当的更改。 / p>

答案 1 :(得分:3)

您将不得不使用NSNumber。

NSNumber * myInt = [NSNumber numberWithInt:myNumber];

然后传入,当你在选择器中收到它时:

NSInteger newInteger = [myNumber integerValue];

重要的是要理解的是,您正在使用NSNumber将基元转换为对象。我希望有所帮助。

答案 2 :(得分:0)

替代:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.5f * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    [self startNewThing:100];
});