歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

iOS圖片引用imageNamed 風險

你還在使用myImage = [UIImage imageNamed:@"icon.png"];嗎???!!!  

如題,是不是大家為了方便都這樣加載圖片啊
myImage = [UIImage imageNamed:@"icon.png"];
那麼小心了
這種方法在一些圖片很少,或者圖片很小的程序裡是ok的。
但是,在大量加載圖片的程序裡,請千萬不要這樣做。
為什麼呢 ???????

這種方法在application bundle的頂層文件夾尋找由供應的名字的圖象 。 如果找到圖片,裝載到iPhone系統緩存圖象。那意味圖片是(理論上)放在內存裡作為cache的。

試想你圖片多了,是什麼後果``````
圖片cache極有可能不會響應 memory warnings and release its objects

所以,用圖片的時候一定要小心的alloc和release
推薦使用
NSString *path = [[NSBundle mainBundle] pathForResource:@"icon" ofType:@"png"];
myImage = [UIImage imageWithContentsOfFile:path];

不過這種方法要注意了,如果有高清圖,也就是@2x的,就不能自動獲取到了,自己把握吧,做ui可以用imageNamed,要處理的大圖就別這樣加載了


// 會緩存圖片
UIImageView *wallpaper = [[UIImageView alloc] initWithImage:
wallpaper = [UIImage imageNamed:@"icon.png"]];

// 不會緩存圖片
UIImageView *wallpaper = [[UIImageView alloc] initWithImage:
wallpaper = [UIImage imageWithContentsOfFile:@"icon.png"]];

Copyright © Linux教程網 All Rights Reserved