Apple's official documentation provides two ways to generate a UIImage object:
1. imagenamed, whose parameters are the name of the picture;
2. Imagewithcontentsoffile, the parameter is also the path of the picture file.
So what's the difference between these two?
There must be. According to Apple's official documentation:
imageNamed: This method finds and returns a picture object in the system cache with a specified name if it exists. If the corresponding picture is not found in the cache, this method loads from the specified document and then caches and returns the object. SoimageNamedThe advantage is that the picture is cached when it is loaded. So when images are used frequently, imageNamed of the Method will be better. For example:you need to load the same icon in a TableView Tableviewcell, then loading the image with imagenamed is highly efficient. The system will cache that icon into memory, and each time the image is used in the Tableviewcell, it will only point the picture pointer to the same piece of memory. It is therefore the useimageNamedWill cache the image, the data in the image is in memory, iOS memory is very precious and when the memory consumption is too large, will force the release of Memory,you will encountermemory warnings. Releasing the memory in the iOS system is a hassle and may cause a memory leak. For example, when The animationimages of a UIView object is a dynamic array Nsmutablearray with UIImage objects, and is animated by frames. When theLoading an image in imagenamed mode to a dynamic array nsmutablearray, which is likely to cause a memory leak. The reason is obvious.
imagewithcontentsoffile : Only pictures are loaded and image data is not cached. Therefore, for larger pictures and less usage, you can use this method to reduce memory consumption.
NSString *path = [[NSBundle mainbundle] pathforresource:@ "icon" oftype:@ "PNG"]; UIImage *image = [UIImage Imagewithcontentsoffile:path];
And:
NSString *filepath = [[NSBundle mainbundle] pathforresource:filename ofType: "PNG"]; NSData *image = [NSData Datawithcontentsoffile:filepath]; UIImage *image = [UIImage imagewithdata:image]; or = [UIImage Imagewithcontentsoffile:filepath];
Again, there are advantages to each of the two usages, and they need to be used for specific application scenarios.