首先我创建一个NSInvocation,因为我想用定时器调用的方法有几个参数,我在这里设置
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:@selector(addStockPriceForArticle:forInterval:)]];
[invocation setArgument:&varArticle atIndex:2];
NSNumber *interval = [NSNumber numberWithInt:60];
[invocation setArgument:&interval atIndex:3];
文档说在设置参数时从索引 2 开始,因为索引 0 和 1 是目标和选择器。
然后我找出我希望计时器的间隔。在这种情况下,我在文章发表 60 分钟后调用计时器,所以间隔60 - timeSincePubDate
以分钟为单位,我乘以 60 得到计时器的间隔(以秒为单位)。
int timeUntilCheck = (60-timeSincePubDate)*60;
然后我创建具有间隔的计时器并将其添加到运行循环中。我以前从未这样做过,但这似乎很简单;我不确定为什么它从来没有调用它应该调用的方法。
[[NSRunLoop currentRunLoop] addTimer:[NSTimer timerWithTimeInterval:timeUntilCheck invocation:invocation repeats:NO]
forMode:NSDefaultRunLoopMode];