本文主要是介绍iOS_UIImage中 + imageNamed: 和 + imageWithContentsOfFile:两个方法的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说明:
UIImage中 + imageNamed: 和 + imageWithContentsOfFile: 都是我们常用的创建image对象方法, 但是它们之间还是有一些区别,特别是考虑线程安全, 系统内存优化方面文章中尽量不使用或少使用封装, 目的是让大家清楚为了实现功能所需要的官方核心API是哪些(如果使用封装, 会在封装外面加以注释)
- 此文章由 @Scott 编写. 经 @春雨,@黑子 审核. 若转载此文章,请注明出处和作者
+ imageNamed: 和 + imageWithContentsOfFile:两个方法的区别
核心API
Class : UIImage
Delegate : null
涉及的API:(API的官方详细注释(英文)详见本章结尾)
+ (UIImage *)imageNamed:(NSString *)name+ (UIImage *)imageWithContentsOfFile:(NSString *)path
讨论:
+ imageNamed:
使用此方法创建image对象首先从系统缓存中查找, 如果缓存中没有, 再从磁盘或者资源目录中加载图片数据,生成image对象返回.同时, Apple官方提示此方法不确保线程的安全.
另外,使用此方法, 在iOS 4以后, 如果文件是PNG格式, 在参数部分指定文件名的时候,后面可以省略.PNG后缀.
另外Apple官方提示如果你只想显示图片,而不想添加进系统的缓存中时, 使用imageWithContentsOfFile:
方法.
+ imageWithContentsOfFile:
相对imageNamed:
方法, 此方法不会缓存图片对象. 在一定情况下, 会提高APP的内存使用效率.
Apple官方注释:
This method looks in the system caches for an image object with the specified name and returns that object if it exists. If a matching image object is not already in the cache, this method locates and loads the image data from disk or asset catelog, and then returns the resulting object. You can not assume that this method is thread safe.
On iOS 4 and later, if the file is in PNG format, it is not necessary to specify the .PNG filename extension. Prior to iOS 4, you must specify the filename extension.
If you have an image file that will only be displayed once and wish to ensure that it does not get added to the system’s cache, you should instead create your image using imageWithContentsOfFile:. This will keep your single-use image out of the system image cache, potentially improving the memory use characteristics of your app.
-
- imageNamed 和 imageWithContentsOfFile两个方法的区别
- 核心API
- 讨论
- API 官方注释英文
- imageNamed 和 imageWithContentsOfFile两个方法的区别
API 官方注释(英文)
/*** @brief Returns the image object associated with the specified filename.** @param <name> The name of the file. If this is the first time the image is being loaded, the method looks for an image with the specified name in the application’s main bundle. ** @return The image object for the specified file, or nil if the method could not find the specified image.*/+ (UIImage *)imageNamed:(NSString *)name
/*** @brief Creates and returns an image object by loading the image data from the file at the specified path.** @param <path> The full or partial path to the file** @return A new image object for the specified file, or nil if the method could not initialize the image from the specified file.*/+ (UIImage *)imageWithContentsOfFile:(NSString *)path
这篇关于iOS_UIImage中 + imageNamed: 和 + imageWithContentsOfFile:两个方法的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!