2009-10-08 28 views
3

对于我们重写开源iMedia框架项目(目前由数十位开发人员使用),我们正在切换到IKImageBrowserView,并且在缓存方面遇到了麻烦。告诉IKImageBrowserView不要安排预加载

看起来,IKImageBrowserView喜欢预加载/预取缓存的图像,作为低优先级的后台任务,尽可能多的还不可见的项目。这可能是有用的,除非我们不想加载CPU(如果我们可以帮助它的话,也可以用于远程检索图像的网络)。

特别是由于我们有自己的FIFO缓存机制(因此我们可以将其他视图的缩略图数据分享到相同的数据中),所有这些都是将缓存填满容量,然后导致旧的项目倾倒。

有什么方法可以禁用此预加载器的调度? (即使现在我们可以小心使用一个未公开的API,但我一定会公开一个请求,将它变成一个公共API,因为能够关闭这个危险能力非常重要。)

这会影响很多应用程序。任何你可以建议的解决方法将非常感激。

BTW一些​​相关的讨论: http://lists.apple.com/archives/cocoa-dev/2007/Nov/msg02011.html

+0

提交。请欺骗! http://www.openradar.appspot.com/radar?id=88402 – danwood 2009-10-09 17:54:33

回答

4

我已经开始使用IKImageBrowserView自己,我以前没有注意到这一点,但事实上,我尝试过了,并正在与看我自己的应用程序相同的行为。

看起来好像IKImageBrowserView上有一个名为_shouldProcessLongTasks的私有方法。我试图覆盖它只是返回NO,并且这似乎阻止了视图中尚未显示的图像的预加载行为(至少在Snow Leopard下,必须在Leopard下进行测试以查看行为是否相同) 。看起来像一个相当低风险的私人API使用,因为如果方法改变,它就不会再被调用。当你向苹果公司报告这个问题时,请张贴雷达号码,以便其他受影响的人员可以在其上提交一份报告,并试图为此公开API和/或行为改变。

为了记录,它看起来像当前的行为是,只要应用程序位于前台并且包含视图的窗口很关键,它就会在后台预取东西。如果您切换到其他应用程序或窗口,则会停止预加载。

相关问题