Objective c 通过NSTimer和常规调用向同一方法传递参数
我需要将一个整数传递给我的方法Objective c 通过NSTimer和常规调用向同一方法传递参数,objective-c,cocoa,nstimer,Objective C,Cocoa,Nstimer,我需要将一个整数传递给我的方法startEvent:。该方法是计时器的动作方法。我已经读过关于如何使用userInfo传递数据的内容,但是我不知道如何这样做,所以我仍然可以像平常一样调用该方法 如何将NSTimer和常规调用中的整数传递给同一个方法 [NSTimer scheduledTimerWithTimeInterval:0.032f target:self selector:@selector(startEvent:) userInfo:nil repeats:NO]; [self s
startEvent:
。该方法是计时器的动作方法。我已经读过关于如何使用userInfo
传递数据的内容,但是我不知道如何这样做,所以我仍然可以像平常一样调用该方法
如何将NSTimer
和常规调用中的整数传递给同一个方法
[NSTimer scheduledTimerWithTimeInterval:0.032f target:self selector:@selector(startEvent:) userInfo:nil repeats:NO];
[self startEvent: 0];
-(void)startEvent:(int) event {
// ...
}
对计时器的动作方法使用传递:
- (void)startEventFromTimer:(NSTimer *)tim
{
[self startEvent:[[tim userInfo] intValue]];
}
您的计时器是使用用户信息对象的NSNumber
创建的
[NSTimer scheduledTimerWithTimeInterval:0.032f
target:self
selector:@selector(startEventFromTimer:)
userInfo:@(theIntYouWantToPass)
repeats:NO];
你是从一个根本的误解开始的。您的方法不能是计时器操作方法,除非它符合记录的签名
- (void)timerFireMethod:(NSTimer*)计时器
正如Josh Caswells answer所示,您必须通过userinfo对象传递附加信息。这需要使用正确的
userinfo
(不是这样)设置计时器。我的最后一句话@rmaddy:“您的计时器是使用用户信息对象的NSNumber
创建的。“但是,为了完整起见,我添加了代码。对不起,我没有注意到最后一句话。即使这样,OP的请求也没有多大意义,因为它意味着计时器每次都会发送相同的值。有点毫无意义。没问题,@rmaddy。应OP的要求,我假设要传递的int是在ivar或类似的行中。@JoshCaswell您的回调方法不应该使计时器无效吗?starteEvent:
方法需要一个类型为NSTimer
的参数来支持您设置计时器的方式。您希望事件每次启动计时器时的值是多少火灾?