2009-08-23 25 views
1

由於iPhone中視圖控制器的延遲加載特性,當您首次進入各種屏幕時,其中有豐富的圖形元素(自定義圖形資源),因此我的應用程序的響應速度有點慢。提前預先載入應用程序圖像,即提前調用[UIImage imageNamed:...],以便下次調用緩存版本時使用。延遲加載使iPhone應用程序第一次響應更少,我可以預取圖像嗎?

這項工作?任何其他技巧,可以加快視圖控制器加載豐富的用戶界面(即使用大量的自定義圖形資產)?

回答

0

發送+[UIImage imageNamed:]會緩存您嘗試加載的圖像,因此提前發送此消息應根據文檔加快後續圖像抓取速度(假設它們位於緩存中)。 imageNamed:文檔是here

0

您也可以提前加載視圖控制器,然後調用[viewController視圖]強制視圖加載。

我不認爲有保證圖像或筆尖加載是安全的從另一個線程調用。如果圖像緩存是線程安全的(NSMutableDictionary是線程安全的IIRC),則圖像加載可能是安全的,但由於init/viewDidLoad/etc可能預計在主線程中運行,因此nib加載較少。

如果您在主線程中預加載了某些內容,則會阻塞用戶界面。你可以減輕這個通過使用performSelector:withObject:afterDelay:和一個小的延遲(0.01?0.1?);請注意,沒有保證。在OS 4上,您可以在[NSOperationQueue mainQueue]上的操作中加載每個圖像;將操作優先級設置爲小(0或0.1?)應確保UI優先。

另外請注意,如果您使用如此多的內存以至於出現內存警告,那麼任何預加載都是沒有意義的。

相關問題