何时使用[NSCalendar autoupdatingCurrentCalendar]的示例

时间:2011-03-08 17:27:22

标签: objective-c cocoa nscalendar

我正在寻找一个使用+ autoupdatingCurrentCalendar代替+ currentCalendar的示例。更具体地说,当日历更改时,基于日历的会自动更改。我需要绑定这个或类似的东西吗?

文档声明:

  

请注意,如果基于缓存值   日历或相关信息   那些缓存当然不会   通过更新自动更新   日历对象。

提前致谢

3 个答案:

答案 0 :(得分:4)

currentCalendar返回当前系统日历的缓存版本,而autoupdatingCurrentCalendar始终返回最新版本的系统日历。

重要的是,当您根据日历的各种参数(如一个月中的天数,一年中的星期数或一天中的小时数)显示数据时。

说实话,我不知道为什么Apple会通过currentCalendar让您有机会获得过时的价值。 看起来他们有内部API,允许您操作NSCalendar的缓存,因此您可以获得更好的性能。但由于它不公开,因此没有理由使用currentCalendar

即,始终使用autoupdatingCurrentCalendar

答案 1 :(得分:1)

那么,在OS X上,您可以同时运行多个进程。一个可能是您使用autoupdatingCurrentCalendar的流程。另一个可能是系统偏好。

系统偏好设置允许您自定义日历设置。您可以选择一周的第一天不是默认值(星期日)。或者你可以选择一个完整的不同日历。如果您使用autoupdatingCurrentCalendar,则会自动获取这些更改。如果你不使用它,它们就不会。

答案 2 :(得分:0)

我想如果将日历存储在内存中以供进一步使用,它才有用。这样做,如果日历设置发生变化,如果您使用了autoupdatingCurrentCalendar,则存储的日历将考虑这些更改。如果你只使用currentCalendar,那么它将保持你第一次通话时的状态。