iOS中imageNamed,imageContentsOfFile和initWithContentsFile的使用

一, [UIImage imageNamed]

UIImage * image0 = [UIImage imageNamed:@"111"];

此方法是很常用的方法,是从 [NSBundld  mainBundle]上部查找图片,然后加载到图片到内存的缓存中,加到缓存的好处是能够快速的加载图片,如果该图片在其他地方也经常使用,建议使用imageNamed.

但是使用该方法创建的对象在被autoReleasePool释放的时候,内存里的图片缓存是不释放的.而且是没有明确的释放方法.所以,如果图片比较大,用这种方法会消耗很大的内存.

图片缓存,对象是被autoreleasePool释放的时候释放.

二, [UIImage imageWithContentsOfFile]

UIImage * image1 = [UIImage imageWithContentsOfFile:@"1111"];

此方法加载的图片是不会缓存的.得到的对象是autoRelease的,当autoReleasePool释放对象时才释放内存.

图片不缓存,对象被autoreleasePool释放的时候释放.

三, [[UIImage alloc] initWithContentsFile]

UIImage * image2 = [[UIImage alloc] initWithContentsOfFile:@"111"];

此方法是手动Release的,系统不缓存.对象release之后立即释放.一般用于封面等图片比较大的地方.

图片不缓存,对象被release之后立即释放.

你可能感兴趣的:(iOS中imageNamed,imageContentsOfFile和initWithContentsFile的使用)