gpt4 book ai didi

cocoa - 每天安排一种方法 Cocoa

转载 作者:行者123 更新时间:2023-12-03 17:56:37 25 4
gpt4 key购买 nike

美好的一天!

我正在为 Mac OS X(不是 iPhone)开发提醒软件。它应该一天一次显示一个窗口。具体时间没有规定,只是一次。我怎样才能做到呢。它会自行注册以在登录后启动。我已经尝试过 NSTimer 但看起来当我调用时它不会触发方法[timer setfFireDate:] 在第一个方法触发之后。

期待您的帮助。

最佳答案

从您最新的评论来看,您似乎需要同时使用计时器和用户默认值。用户默认方法首先检查是否有名为“firstOpening”的用户默认值,如果没有,则将其设置为当前时间——这将为 20 天试用期的开始设置时钟。第一个 if 子句只会在程序第一次打开时运行。

我创建了一个属性,firstOpenTime,它从用户默认值中检索值,并使用它来检查 20 天是否已过期 - 如果是,程序将运行 PresentExpiredWindow 方法,如果没有,它会显示提醒窗口,并设置一个重复计时器,每 24 小时运行一次。因此,即使程序始终保持打开状态,计时器也应该每 24 小时触发一次以显示提醒窗口(除非 20 天已经过去,然后计时器方法调用 showExpiredWindow 方法并使自身失效)。

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification{

if (![[NSUserDefaults standardUserDefaults] objectForKey:@"firstOpening"] ){
[[NSUserDefaults standardUserDefaults] setObject:[NSDate date] forKey:@"firstOpening"];
}

self.firstOpenTime = [[NSUserDefaults standardUserDefaults] objectForKey:@"firstOpening"];
if ([[NSDate date] timeIntervalSinceDate:self.firstOpenTime] > 1728000) { //1,728,000 seconds is 20 days
[self presentExpiredWindow];
}else{
[self presentReminderWindow];
[NSTimer scheduledTimerWithTimeInterval:86400 target:self selector:@selector(presentReminder:) userInfo:nil repeats:YES];
}

}

-(void)presentReminder:(NSTimer *) aTimer {
if ([[NSDate date] timeIntervalSinceDate:self.firstOpenTime] > 1728000) {
[self presentExpiredWindow];
[aTimer invalidate];
}else{
[self presentReminderWindow];
}

}

-(void)presentReminderWindow {
//show reminder window
}


-(void)presentExpiredWindow {
//show trial period has ended window
}

关于cocoa - 每天安排一种方法 Cocoa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com