您的位置:首页 > 运维架构

小图用 imageNamed: 大图用 dataWithContentsOfFile:options

2014-11-10 20:09 344 查看
1down voteaccepted

If you're loading images like:
[UIImage imageNamed:@"myImage.png"];

Then the memory for this image will not deallocated, because
imageNamed:
cache the image. This method is useful for showing some small icons,avatars, etc. So, if you must show many big images, then use
UIImage *myImage = [UIImage imageWithData:[[NSBundle mainBundle] pathForResource:@"myImage" ofType:@"png"];

This will not cache the image and memory will deallocated when retain count will equal to 0 for that object.

Besides that, when you only push a view controller without pop it in future, then the view controller will never deallocated and will always take a place in memory until the app will not crashed/killed, or until the ViewController who holds that view controller will not deallocated.

So, always make sure that you deallocated the viewController if there is no more need of it (i.e. pop it if it was pushed, or dismiss it in case if it was presented modally) and then show your next view controller.

share|improve this answer

edited Jul 11 at 10:19

answered Jul 10 at 19:42



arturdev
2,121319

1
Instead of using
-dataWithContentsOfFile:
, I would suggest using
-dataWithContentsOfFile:options:
, and use the
NSDataReadingMappedIfSafe
, so that you don't have the overhead of copying around the file's data to user-space until UIImage reads it. – Richard J. Ross IIIJul 10 at 20:03

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: