告诉IKImageBrowserView不要安排预压(Telling IKImageBrowserV

2019-08-17 13:46发布

对于我们的开源互动媒体框架项目的改写(以目前使用的几十个开发者),我们切换到IKImageBrowserView,并具有令人不安的时间缓存。

看来,IKImageBrowserView喜欢预载/预取图像的缓存,作为一个低优先级的后台任务,因为许多还未可见的项目,它可以。 这可能是有用的,但我们不希望加载(用于远程检索到的图像和网络)的CPU,如果我们能帮助它。

特别是因为我们有自己的FIFO缓存机制(所以我们可以分享我们的其他视图到同一数据的缩略图数据),这一切正在做的是填补了高速缓存容量高达然后造成倾倒的旧项目。

是否有某种方式来禁用该预加载的时间安排? (即使有,我们可以用小心翼翼现在一个未公开的API,我一定会开辟一个请求,使之变成一个公共的API,因为它是真正重要的是要能够把这种危险的能力了。)

这将真正影响到了很多的应用。 任何变通办法你可以建议将非常感激。

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

Answer 1:

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

它看起来像有上IKImageBrowserView称为_shouldProcessLongTasks的私有方法。 我试图重写它只是返回NO,并出现以防止那些未在视图中显示图像的预加载行为(至少在雪豹,必须在豹测试,看看是否行为是一样的) 。 似乎是一个相当低风险的私有API的使用,因为如果方法的改变,它只是不会再被调用。 当您在此文件中的错误与苹果,确实张贴了雷达号码,以便影响可以在其上提交欺骗和试图获得一个公共API和/或行为改变这个人。

为了记录在案,它看起来像当前的行为是,它会在后台预取东西,只要应用程序是在前台和包含视图窗口是关键。 如果您切换到另一个应用程序或窗口,然后它停止预压。



文章来源: Telling IKImageBrowserView not to schedule preloading