我试图使用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/