imageName:
(1)加载内存当中之后,会一直停留在内存当中,不会随着对象的销毁而销毁。
(2)加载进去图片之后,占用的内存归系统管理,我们无法管理。
(3)相同的图片,图片不会重复加载。
(4)加载到内存中后,占据内存空间较大。
imageWithContentsofFile:
(1)加载到内存当中后,占据内存空间较小。
(2)相同的图片会被重复加载内存当中。
(3)对象销毁的时候,加载到内存中图片会随着一起销毁。
结论
imageName:由于一直停留在ram,所以更适合于经常用到的,且不太大的图片。
而imageWithContentsofFile:更适合用于图片数据较大的情况,且比较少用到的情况。
load子工程image(适配iOS7)
+ (UIImage *)imageNamed:(NSString *)imageName withBundleName:(NSString *)bundleName
{
NSBundle *bundle = [self bundleNamed:bundleName];
if (SystemLessThan(8.0)) {
NSString *path = [[bundle resourcePath] stringByAppendingPathComponent:imageName];
UIImage *image = [UIImage imageWithContentsOfFile:path];
return image;
}
else {
return [UIImage imageNamed:imageName inBundle:bundle compatibleWithTraitCollection:nil];
}
}
+ (NSBundle *)bundleNamed:(NSString *)bundleName
{
NSString *bundlePath = [[NSBundle mainBundle] pathForResource:bundleName ofType:@"bundle"];
return [NSBundle bundleWithPath:bundlePath];
}