- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据下面的数据,ClockKit 会生成一次 future 的 CLKComplicationTimelineEntry
项,但对于过去的时间点,会进行 24 次调用!这是为什么?
更多详情:
我注意到我的 Apple Watch 复杂功能出现了奇怪的行为。
它支持时间旅行——我提供过去 1 天和 future 4 天的数据。我目前正在努力成为一名好公民,并减少调用来重新生成我的并发症数据。
为了了解某些调用的频率,我在 getTimelineEntries(for:before:limit:withHandler:)
和 中放置了一个简单的
输出 print
getTimelineEntries(for:after:limit:withHandler:)before
/after
参数。
当我在模拟器中启动 App/Complication 时,我得到以下输出:
generate future timeline entries (after date:2016-07-23 10:33:31 +0000)
generate past timeline entries (before date:2016-07-23 10:33:31 +0000)
generate past timeline entries (before date:2016-07-23 09:33:31 +0000)
generate past timeline entries (before date:2016-07-23 08:33:31 +0000)
generate past timeline entries (before date:2016-07-23 07:33:31 +0000)
generate past timeline entries (before date:2016-07-23 06:33:31 +0000)
generate past timeline entries (before date:2016-07-23 05:33:31 +0000)
generate past timeline entries (before date:2016-07-23 04:33:31 +0000)
generate past timeline entries (before date:2016-07-23 03:33:31 +0000)
generate past timeline entries (before date:2016-07-23 02:33:31 +0000)
generate past timeline entries (before date:2016-07-23 01:33:31 +0000)
generate past timeline entries (before date:2016-07-23 00:33:31 +0000)
generate past timeline entries (before date:2016-07-22 23:33:31 +0000)
generate past timeline entries (before date:2016-07-22 22:33:31 +0000)
generate past timeline entries (before date:2016-07-22 21:33:31 +0000)
generate past timeline entries (before date:2016-07-22 20:33:31 +0000)
generate past timeline entries (before date:2016-07-22 19:33:31 +0000)
generate past timeline entries (before date:2016-07-22 18:33:31 +0000)
generate past timeline entries (before date:2016-07-22 17:33:31 +0000)
generate past timeline entries (before date:2016-07-22 16:33:31 +0000)
generate past timeline entries (before date:2016-07-22 15:33:31 +0000)
generate past timeline entries (before date:2016-07-22 14:33:31 +0000)
generate past timeline entries (before date:2016-07-22 13:33:31 +0000)
generate past timeline entries (before date:2016-07-22 12:33:31 +0000)
generate past timeline entries (before date:2016-07-22 11:33:31 +0000)
最佳答案
没有规定您的数据源方法只会被调用一次。您只需要准备好处理请求。
为什么它处理过去条目的方式与处理 future 条目的方式不同?
我相信这是一项优化,旨在优先考虑即将到来的时间线条目(而不是最近的过去条目)。
回到 watchOS 2.0.1,并发症服务器首先用 future 的条目填充时间线,然后继续 backfill the timeline with past entries .这当然是可以理解的,Apple 可能会选择对过去的条目进行批处理,以优先考虑较新的条目而不是较远的条目。
虽然 Apple 从那时起肯定已经调整了其代码,但可能在当前版本的 watchOS 中继续应用相同级别的关注和细节。
如果我要完成一项昂贵的操作怎么办?
如果您需要做的不仅仅是简单地使用手头现有的复杂数据,并且您的数据检索与系统发出的特定请求相关联,则您应该重构该代码以将其移出该方法。
一般来说,您希望手头有预取数据,可以直接将其转换为时间线条目。
这在 watchOS 3 中变得更加重要,当你是 not merely updating a complication ,还会在后台更新您的应用程序。即使您现在仍然需要支持 watchOS 2,您也应该设计如何获取数据和更新复杂功能,以考虑 watchOS 3 如何完成更新您的整个应用程序。
为什么它不止一次调用我的数据源方法?
Apple 使用多种技术来优化复杂服务器(或操作系统的其他部分)的工作方式。您所能做的就是相信系统经过调整以减少其内存和能源使用,并且它这样做是有充分理由的。
这实际上已经成为多年的标准做法,并且在 UITableViewDataSource
中很常见,其中像 numberOfSectionsInTableView
might be called several times 这样的方法.
正如另一位发帖人所写,方法被调用的次数 can change between different versions of the OS .
如果是错误怎么办?
它可能会按预期工作,但如果您认为这是一个错误,您可以创建一个最小的示例项目并使用 bug report to Apple 提交它.
关于时间旅行的无关笔记
我注意到您想提供 4 天的 future 时间旅行条目。这将超过时间旅行滑动窗口。
为了效率起见,您可能需要考虑latestTimeTravelDate
:
When constructing your timeline, do not create any entries after this date. Doing so is a waste of time because those entries will not be displayed right away.
关于watchkit - 对于 Watch Complication 和 Time Travel,getTimelineEntriesForComplication 被(太)经常调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38540958/
当运行 scala.util.Random().nextInt(3) 81 次时,我看到如下结果(Java 开发人员,请参阅 edit 了解这之间的关系): 200010202002112102222
在使用 native 应用程序在混合模式 C++/CLI 中调试时,我遇到了进程挂起问题。这是无法忍受的,我的调试几乎 70% 都会发生这种情况,我需要一次又一次地重新启动该过程。 是否有任何修补程序
我不知道这是一个错误还是某种误用/错误配置。希望有人能帮忙。谢谢! 如果我更改模块或 list 目录中的文件,通常会导致错误,大部分是以下类型 无法找到节点上的类 在节点上找不到定义类 当 Puppe
我是一名优秀的程序员,十分优秀!