2009-10-08 56 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和/或行爲改變。

爲了記錄,它看起來像當前的行爲是,只要應用程序位於前臺並且包含視圖的窗口很關鍵,它就會在後臺預取東西。如果您切換到其他應用程序或窗口,則會停止預加載。