Cocoa 新的一天开始时,我能得到通知吗?
在Cocoa中,是否有我可以注册的通知,通知我新的一天开始的时间-凌晨00:00:01?据我所知,没有通知。当新的一天开始时,您可以让计时器启动,如下所示:Cocoa 新的一天开始时,我能得到通知吗?,cocoa,Cocoa,在Cocoa中,是否有我可以注册的通知,通知我新的一天开始的时间-凌晨00:00:01?据我所知,没有通知。当新的一天开始时,您可以让计时器启动,如下所示: [[NSTimer alloc] initWithFireDate:midnight interval:60 * 60 * 24 //one day, in seconds target:someObj
[[NSTimer alloc] initWithFireDate:midnight
interval:60 * 60 * 24 //one day, in seconds
target:someObj
selector:@selector(someSelector)
userInfo:nil
repeats:YES];
诀窍是将NSDate
设置为午夜。检查如何使用日期组件等执行此操作
编辑:有关如何获取午夜日期的问题,请参见。如果是用于iPhone开发的,您还可以收听。它在比午夜到来更多的场合被发布,但是当你收到一个,你可以简单地检查你是否在午夜或接近午夜
对于Mac OS X,您必须按照Tom Dalling的建议进行操作,但您也应该跟踪自己(以便更新计时器)以及。从iOS8开始,您还可以直接收听NSCalendarDayChangedNotification。正如其他人提到的,在iOS 8中,您可以使用NSCalendarDayChangedNotification。关于如何做到这一点,这将为您提供更多信息 本质上,NSCalendarDayChangedNotification要求您转到appDelegate文件,并在app中插入以下代码(改编自Swift 3指南): 其中,“ViewController”是我的一个类的类名,“dayChangedOperations”是我希望在日期更改时运行的函数的名称 计算上次更改后的天数
请注意,您从中得到的只是一个通知,表示日期已更改。您没有获得应用程序上次运行后的天数。因此,每次运行此函数时,请记住将日期保存为用户默认值,以便以后可以使用它进行比较。谢谢你们的回答。看来,我只能接受其中一个,还不能投票支持他们。不幸的是,它适用于Mac OS X-UIApplicationsSignificantTimeChangeNotification正是我想要的..谢谢!从10.9(Mavericks)开始,MacOSX上也提供了这一功能。比创建NSTimer要好得多。
NotificationCenter.default.addObserver(self, selector: #selector(ViewController.dayChangedOperations(notif:)), name:NSNotification.Name.NSCalendarDayChanged, object:nil)