2012-02-17 97 views
3

我有一個性能問題,如果我加載一個JPG(是的,我不能提供任何PNG文件格式的應用程序)圖像從[UIImage imageWithContentsOfFile: ]磁盤,存儲UIImage在全局NSCache中使用緩存圖像[UITableViewCell drawRect: ]。這種方法比用戶[UIImage imagedNamed:]慢得多。UIImage + NSCache與[UIImage imageNamed:]

如果已經分析用儀器的性能「時間檔案」,正如你可以在第一個圖片中看到的JPEG在[DBArtistTableViewCell drawRect:]總是解碼。 在第二張圖片[UIImage imageNamed:]解決方案中,JPG不會解壓。

NSCache + UIImage解決方案: NSCache + UIImage

[UIImage imageNamed]解決方案 UIImage imageNamed

簡短的問題是:爲什麼是UIImage + NSCache解決方案比[UIImage imageNamed:]解決方案慢,什麼是[UIImage imageNamed:]法魔(是的我知道緩存,但其他的魔術是什麼)?

THX的幫助。

回答

3

我相信原因是UIImage imageNamed使數據進行解壓縮並存儲在它的高速緩存,而UIImage imageWithContentsOfFile載荷的壓縮數據,但直到你需要顯示它並沒有解壓縮。

+0

有沒有辦法通過自己解壓從[UIImage的imageWithContentsOfFile]的UIImage的? – CarlJ 2012-02-17 11:59:46

+1

即使世界在這個問題上的意見,可以幫助您進行一些討論:http://stackoverflow.com/questions/1815476/cgimage-uiimage-lazily-loading-on-ui-thread-causes-stutter – ikuramedia 2012-02-18 03:55:17