我有不同的肖像和风景图像,我从文档目录中获取图像,它们共有62个图像。 31具有1015x745尺寸的风景图像和31具有751x1024尺寸的肖像。所有图像都加载到模拟器上,但是当我在设备中运行相同的代码时应用程序崩溃。它只加载风景图像上的肖像。
int porWidth = 768, lanWidth = 1024;
int i=0;
for (CatalogIndividuals *cat in self.array)
{
UIImageView *imageView1 = [[[UIImageView alloc] initWithFrame:CGRectMake(porWidth*i +5, 0, 757, 964)] autorelease];
imageView1.tag = porImage+i;
NSString *fullPath =[self.documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",cat.portraitImage]];
imageView1.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:[fullPath stringByReplacingOccurrencesOfString:@"\\" withString:@"/"]]];
imageView1.contentMode = UIViewContentModeScaleAspectFit;
UIImageView *imageView2 = [[[UIImageView alloc] initWithFrame:CGRectMake(lanWidth*i +5, 0, 1015, 620)] autorelease];
imageView2.tag = lanImage+i;
NSString *tempPath = [self.documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",cat.landscapImage]];
NSString *str = [tempPath stringByReplacingOccurrencesOfString:@"\\" withString:@"/"];
NSLog(@"imageView1 fullPath = %@",str);
imageView2.image = [UIImage imageWithData:[NSData dataWithContentsOfFile:str]];}
我认为存在一些内存泄漏问题。如果有人有任何解决方案,请提供帮助。
答案 0 :(得分:2)
这大约是350MB的图像。你没有内存泄漏,你只是使用了太多的内存。这是一台移动设备,而不是台式电脑,您可以使用的资源有限。
您不应该一次加载所有图像,您应该在滚动内容时动态加载它们。看一下Apple为UIScrollView
提供的示例代码,看看如何使用平铺来实现这一目标。