• imageNamed 与 imageWithContentsOfFile差额


    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

    假设文章对您有所帮助。欢迎给作者捐赠,支持郝萌主,捐赠数额任意。重在心意^_^ 

    我要捐赠: 点击捐赠

    Cocos2d-X源代码下载:点我传送


    普通情况下,载入图片都例如以下:

    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];


    用UIImage载入图像的方法非常多,最经常使用的是以下两种:

        1、用imageNamed函数

    [UIImage imageNamed:ImageName];

        2、用NSData的方式载入,比如:

    NSString *filePath = [[NSBundle mainBundle] pathForResource:fileName ofType:extension];
    NSData *image = [NSData dataWithContentsOfFile:filePath];
    [UIImage imageWithData:image];

        因为第一种方式要写的代码比較少,可能比較多人利用imageNamed的方式载入图像。


    事实上这两种载入方式都有各自的特点。

        1)用imageNamed的方式载入时,系统会把图像Cache到内存。

    假设图像比較大,或者图像比較多,用这样的方式会消耗非常大的内存,并且释放图像的 内存是一件相对来说比較麻烦的事情。比如:假设利用imageNamed的方式载入图像到一个动态数组NSMutableArray,然后将将数组赋予一 个UIView的对象的animationImages进行逐帧动画,那么这将会非常有可能造成内存泄露。并且释放图像所占领的内存也不会那么简单。

    可是利 用imageNamed载入图像也有自己的优势。对于同一个图像系统仅仅会把它Cache到内存一次,这对于图像的反复利用是很有优势的。

    比如:你须要在 一个TableView里反复载入相同一个图标,那么用imageNamed载入图像,系统会把那个图标Cache到内存,在Table里每次利用那个图 像的时候,仅仅会把图片指针指向同一块内存。这样的情况使用imageNamed载入图像就会变得很有效。

        2)利用NSData方式载入时,图像会被系统以数据方式载入到程序。

    当你不须要重用该图像。或者你须要将图像以数据方式存储到数据库,又或者你要通过网络下载一个非常大的图像时,请尽量使用imageWithData的方式载入图像。

        不管用哪种方式载入图像,图像使用结束后,一定要记得显示释放内存。

    郝萌主倾心贡献,尊重作者的劳动成果,请勿转载。

    假设文章对您有所帮助。欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 

    我要捐赠: 点击捐赠

    Cocos2d-X源代码下载:点我传送


    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    java解决跨域
    时间格式化
    base64图片实现文件上传
    java对Base64图片的加密解密
    A5/web项目连接Oracle 12c数据库报:ORA-01017: 用户名/口令无效
    JavaScript中call如何使用?
    C# 如何让new 出来的form显示在最外层?
    因为数据库和客户端字符集不一样原因,导致显示乱码???????,解决办法
    日语键盘按键修正记录
    keybd_event 在F按键系列不起作用的解决办法
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4855560.html
Copyright © 2020-2023  润新知