Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 新的一天开始时,我能得到通知吗?_Cocoa - Fatal编程技术网

Cocoa 新的一天开始时,我能得到通知吗?

Cocoa 新的一天开始时,我能得到通知吗?,cocoa,Cocoa,在Cocoa中,是否有我可以注册的通知,通知我新的一天开始的时间-凌晨00:00:01?据我所知,没有通知。当新的一天开始时,您可以让计时器启动,如下所示: [[NSTimer alloc] initWithFireDate:midnight interval:60 * 60 * 24 //one day, in seconds target:someObj

在Cocoa中,是否有我可以注册的通知,通知我新的一天开始的时间-凌晨00:00:01?

据我所知,没有通知。当新的一天开始时,您可以让计时器启动,如下所示:

[[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)