2013-10-16 93 views
2

這就要求我選擇重複各60秒後根據需要:NSTimer - 爲什麼scheduledTimerWithTimeInterval工作,但initWithFireDate不?

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]; 

任何人都可以解釋爲什麼嗎?謝謝。

回答

2

你需要第二計時器添加到主循環:

[[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 

返回值: 接收器,初始化這樣,當添加到運行循環中時,它將在日期觸發,如果重複爲YES,則每隔幾秒鐘觸發一次。

您必須使用addTimer:forMode:將新計時器添加到運行循環中。 發射時,計時器發送aSelector消息作爲目標。 (如果 定時器配置爲重複時,就沒有必要隨後重新添加 定時器運行循環。)

NSTimer Apple Doc

相關問題