我正在尝试使用 NSTimer
来调用方法,但它不起作用。
我需要此方法在用户在日历上设置的特定日期和时间运行一次。
我的 viewDidLoad
方法中有这段代码:
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:24];
[comps setMonth:10];
[comps setYear:2011];
[comps setHour:23];
[comps setMinute:11];
[comps setSecond:0];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
schedulerTimer=[[NSTimer alloc] initWithFireDate:date interval:0 target:self selector:@selector(recordByScheduler:) userInfo:nil repeats:false];
但是这段代码什么也没做。可能我误解了 NSCalendar
。我应该在这里做什么?第二个问题:应用程序在后台运行时 NSTimer
是否被触发?
最佳答案
你需要在runloop中调度定时器。
[[NSRunLoop currentRunLoop] addTimer:schedulerTimer forMode:NSDefaultRunLoopMode];
或类似,视情况而定。
对问题编辑的回复:
当您的应用程序处于后台时,不会触发 NSTimer。
关于objective-c - 使用 fireDate 初始化的 NSTimer 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7882500/