何时使用 [NSCalendar autoupdatingCurrentCalendar] 的示例
我正在寻找一个示例,其中使用 + autoupdatingCurrentCalendar
而不是 + currentCalendar
。更具体地说,当日历更改时,基于日历的值会自动更改。我需要绑定这个或类似的东西吗?
文档指出:
请注意,如果您基于以下条件缓存值 日历或相关信息 这些缓存当然不会 通过更新自动更新 日历对象的。
提前致谢
I'm looking for an example where + autoupdatingCurrentCalendar
would be used instead of + currentCalendar
. More specifically where the values based on the calendar are automatically changed when the calendar changes. Do I need bindings for this or something like that?
The docs state:
Note that if you cache values based on
the calendar or related information
those caches will of course not be
automatically updated by the updating
of the calendar object.
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
currentCalendar
返回当前系统日历的缓存版本,而autoupdatingCurrentCalendar
始终返回系统日历的最新版本。当您根据日历的各种参数(例如一个月中的天数、一年中的周数或一天中的小时数)显示数据时,这一点很重要。
说实话,我不知道为什么 Apple 给你一个通过使用
currentCalendar
获取过时值的机会。看起来他们有内部API,允许你操作
NSCalendar
的缓存,这样你就可以获得更好的性能。但由于它不是公开的,因此没有理由使用currentCalendar
。也就是说,始终使用
autoupdatingCurrentCalendar
。currentCalendar
returns cached version of current system calendar, whileautoupdatingCurrentCalendar
always returns most recent version of system calendar.That is important, when you are presenting data based on the various parameters of a calendar like number of days in a month, number of a weeks in year or number of hours in a day.
To be honest, I don't know why Apple gives you an opportunity to get outdated value by using
currentCalendar
.It looks like they have internal API that allows you to manipulate caches of
NSCalendar
, so you can achieve better performance. But since it is not public, there is no reason to usecurrentCalendar
.That is, always use
autoupdatingCurrentCalendar
.那么,在 OS X 上您可以同时运行多个进程。其中之一可能是使用
autoupdatingCurrentCalendar
的进程。另一个可能是系统偏好设置。系统偏好设置允许您自定义日历设置。您可以选择一周的第一天,而不是默认日期(星期日)。或者您可以选择完全不同的日历。如果您使用
autoupdatingCurrentCalendar
,这些更改将自动生效。如果你不使用它,他们就不会。Well, on OS X you can be running multiple processes simultaneous. One could be your process that uses the
autoupdatingCurrentCalendar
. The other could be System Preferences.System Preferences allows you to customize your calendar settings. You can choose the first day of the week to be something other than the default (Sunday). Or you can choose a whole different calendar altogether. If you use the
autoupdatingCurrentCalendar
, these changes will be picked up automatically. If you don't use it, they won't.我想只有将日历存储在内存中以供进一步使用时才有用。这样,如果日历设置发生更改,并且您使用了 autoupdatingCurrentCalendar,则您存储的日历将考虑这些更改。如果您只使用 currentCalendar,它将保持在您第一次调用时的状态。
I guess that it is only usefull if you store the calendar in memory for further use. Doing that way, if the calendar settings change, your stored calendar will take account of those changes if you used autoupdatingCurrentCalendar. If you only used currentCalendar, it wil stay at the state it was at your first call.