3

这会根据需要每 60 秒重复调用一次我的选择器:

autoDeleteTimer = [NSTimer scheduledTimerWithTimeInterval:60 target:[SimpleDB class] selector:@selector(autoDelete:) userInfo:nil repeats:YES];

下一行根本没有调用它。不是最初也不是 60 秒后:

autoDeleteTimer = [[NSTimer alloc] initWithFireDate: [NSDate dateWithTimeIntervalSinceNow:1] interval:60 target:[SimpleDB class] selector:@selector(autoDelete:) userInfo:nil repeats:YES];

谁能解释为什么?谢谢。

4

1 回答 1

6

您需要将第二个计时器添加到主循环:

[[NSRunLoop mainRunLoop] addTimer: autoDeleteTimer forMode:NSDefaultRunLoopMode];

从方法的文档中:

- (id)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats

返回值:接收器,已初始化,当添加到运行循环时,它将在 date 触发,然后,如果 repeats 为 YES,则此后每隔几秒触发一次。

您必须使用 addTimer:forMode: 将新计时器添加到运行循环。触发后,计时器将消息 aSelector 发送到目标。(如果定时器配置为重复,则无需随后将定时器重新添加到运行循环中。)

NSTimer 苹果文档

于 2013-10-16T13:42:46.050 回答