在iphone开发过程中,代码中的内存泄露我们很容易用内存检测工具leaks 检测出来,并一一改之,但有些是因为ios 的缺陷和用法上的错误,leaks 检测工具并不能检测出来,你只会看到大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃。以下是开发过程中遇到的一些问题和网上的一些资料,总结了一下:
UIImage如何加载图片
用UIImage加载本地图像最常用的是下面三种:
1、imageNamed
UIImage *image = [UIImage imageNamed: imageName];
这种方式初学者用的最多,因为方便,但是它会把每次加载出来的图片放入内存中缓存起来,如果图片非常多,非常容易造成程序卡,甚至崩溃。但是如果有一些图片要经常被使用,那么使用这个方法效率会很高。一般不使用。
2、imageWithContentsOfFile
NSString *fullPath = [[NSBundle mainBundle] pathForResource: imageName ofType:nil];
UIImage *image = [UIImage imageWithContentsOfFile: fullPath];
这个方法加载图片是不会缓存的,最多的使用这个。
3、initWithContentsOfFile
UIImage *image = [[UIImage alloc] initWithContentsOfFile: imageName];
这个方法需要手动release掉,不系统缓存。release后立即被释放,一般用在封面等图比较大的地方。