我需要将一个整数传递给我的方法startEvent:
。该方法是计时器的动作方法。我已经阅读了如何使用userInfo
传递数据,但是我不明白如何做到这一点,所以我仍然可以像往常一样调用该方法。
如何将NSTimer
和常规调用中的整数传递给相同的方法?
[NSTimer scheduledTimerWithTimeInterval:0.032f target:self selector:@selector(startEvent:) userInfo:nil repeats:NO];
[self startEvent: 0];
-(void)startEvent:(int) event {
// ...
}
答案 0 :(得分:1)
为计时器的操作方法使用传递:
- (void)startEventFromTimer:(NSTimer *)tim
{
[self startEvent:[[tim userInfo] intValue]];
}
您的计时器是使用NSNumber
为其用户信息对象创建的。
[NSTimer scheduledTimerWithTimeInterval:0.032f
target:self
selector:@selector(startEventFromTimer:)
userInfo:@(theIntYouWantToPass)
repeats:NO];
答案 1 :(得分:0)
你是从一个根本的误解开始的。您的方法不能是定时器操作方法,除非它符合记录的签名。
您必须传递其他信息的唯一机会是通过userinfo对象,正如Josh Caswells的答案所示。