3

我有一個iPad應用程序(> 30次瀏覽/頁面)每個視圖都有獨特的背景。客觀-c內存友好的方式爲背景圖片

問題: 什麼設置背景的最佳方式(記憶型)

有比添加一個更好的辦法:UIImageView的「backgroundView」作爲一個子視圖?

VERSION1:

[[UIImage alloc] initWithData:imageData]; 

這似乎是與視網膜開關

版本2有問題的:

self.layer.contents = (id)image.CGImage; 

版本3:

UIImage* image = [UIImage imageWithContentsOfFile:fileLocation]; 

版本2似乎工作正常。也許有人告訴我什麼是最好的辦法,爲什麼;)

謝謝 亞歷

回答

1

CGImage是視網膜...版本3的問題。對記憶友好最好!

0

在版本2中,如果不使用ARC,則會生成一個新的圖像對象,您必須手動將其釋放。版本3使用自動釋放對象。

兩個版本在內存友好方面都相同。 我寧願版本3,因爲你不必自己做任何事情來釋放內存。

你也可以使用[UIImage imageNamed:@「image-name.png」],它也會生成一個自動釋放對象。

如果您希望它儘可能方便記憶,那麼您應該考慮使用PVR圖像,因爲這些圖像本身是由圖形硬件支持的。

最佳,

弗洛

+0

您好,感謝您的快速反應。 但imagenamend會吃多達內存;/ 所以我需要像[self addSbview:UIIMAGEVIEW]以及? 因爲我不會在版本2 neet這? –

+0

imageNamed爲什麼太耗費內存?我想不出爲什麼這個構造函數會創建比另一個更大的內存塊。也許我不明白你的問題,但無論如何,你將不得不加載一個圖像,並將其分配給圖像視圖或CoreAnimation圖層。我不認爲使用UIImageView會產生很大的開銷。 – guitarflow

+0

,因爲圖像是由應用程序緩存的。只是谷歌「imagenamed - 內存泄漏」好吧 - 其實它確實在更大的應用程序上創造了很多開銷。 –