Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 通过NSTimer和常规调用向同一方法传递参数_Objective C_Cocoa_Nstimer - Fatal编程技术网

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
的参数来支持您设置计时器的方式。您希望
事件每次启动计时器时的值是多少火灾?