我试图使用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是否被触发?

最佳答案

您需要在运行循环中安排计时器。

[[NSRunLoop currentRunLoop] addTimer:schedulerTimer forMode:NSDefaultRunLoopMode];

或类似的,视情况而定。
问题编辑回复:
当应用程序位于后台时,不会触发任何nstimer。

关于objective-c - 用fireDate初始化的NSTimer不会触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7882500/

10-08 21:07