• iOS imageNamed VS imageWithContentsOfFile


    今天 又学习了 一个 提高应用交互效率 降低内存的 小知识

    结论:

    (1)mageNamed加载图片,并且把image缓存到内存里面,

    (2)imageWithContentsOfFile是只显示图片,但不加到内存中。

    1 .通常 我们都是把 切图放在Images.xcassets 里面  然后 用  [UIImage  imageNamed:@"XXX"] 来获取

    过程:

    加载图片 首先app  先会查系统缓存,如果没有 会遍历整个工程文件找到这个文件进行系统缓存,以备下次使用 并返回这个图片 没有这个图片 返回nil (而缓存何时释放 有系统决定)

    这种方式适合 常用切图,(还有比如:UITableViewCell , UICollectionCell 等频繁加载同一个图标) 如果是有很多图片 图片又很大 会出现 "内存不足,内存泄露,甚至是程序的崩溃"

    2 .对于大图片 比如 像引导页 那种 占了 几乎满屏的图  并且复用率很低  比较适合 imageWithContentsOfFile 方式

    代码:

    //全局宏 : 可以在 pch 文件中定义一个宏,在整个项目中使用
    #define ResourcePath(path)  [[NSBundle mainBundle] pathForResource:path ofType:nil]
    #define ImageWithPath(path) [UIImage imageWithContentsOfFile:path]
    调用
    UIImage* image = ImageWithPath(ResourcePath(@"img.jpg"));//需要写出.png/.jpg

    过程:

    这个方法仅仅是加载这个图片 不会缓存.(每次都这样)

    但是 使用这个方法去获取图片 应该放在 工程的"组"(group)里面  因为 ResourcePath 获取到资源文件路径,如果是"文件"(folder) 需要把这个folder的路径也添加上.

    其他:

    参考链接:
    http://my.oschina.net/u/2458687/blog/515161
    相关:
    1.Images.xcassets中的素材 (1)只支持png格式的图片 (2) 图片只支持[UIImage imageNamed]的方式实例化,但是不能从Bundle中加载 (3) 在编译时,Images.xcassets中的所有文件会被打包为Assets.car的文件 2.UIImage imageNamed (1)在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小,常用的图像处理 (2)如果要释放快速释放图片,可以使用[UIImage imageWithContentsOfFile:path]实例化图像 3.Bundle(包)中的图片素材 往项目中拖拽素材时,通常选择 (1) Destination: 勾选 (2) Folders: 1)选择第一项:黄色文件夹 注意点:Xcode中分文件夹,Bundle中所有所在都在同一个文件夹下,因此,不能出现文件重名的情况 特点: a.可以直接使用[NSBundle mainBundle]作为资源路径,效率高! b.可以使用[UIImage imageNamed:]加载图像 2)选择第二项:蓝色文件夹 注意点:Xcode中分文件夹,Bundle中同样分文件夹,因此,可以出现文件重名的情况 特点: a.需要在[NSBundle mainBundle]的基础上拼接实际的路径,效率较差 b.不能使用[UIImage imageNamed:]加载图
  • 相关阅读:
    【转】使用Javascript改变HTML内容 拓荒者
    【转】ASP.NET MVC 过滤器Filter 拓荒者
    【转】JavaScript简介 拓荒者
    edge.js架起node.js和.net互操作桥梁
    利用Node.js为Node.js生成HttpStatusCode辅助类并发布到npm
    nodejs上HTML分析利器nodejquery
    JavaScript 函数replace揭秘
    利用Node.js本地构建
    Angularjs的IOC Inject分析
    团队文化中的害群之马
  • 原文地址:https://www.cnblogs.com/someonelikeyou/p/5210046.html
Copyright © 2020-2023  润新知