我使用以下代码在UIWebview中加载图像。对于每个图像(在滚动我的滚动视图时),调用一个函数来加载图像。问题是,当我连续滚动最多30张图像时,应用程序崩溃了。可能是什么原因?我的图像是1300 x 1200像素。请帮我找到解决方案。
- (void) loadCatalogImage
{
@try{
// if(imgView.image != nil)
// return;
// [global_imgProgress startAnimating];
//NSLog(@"image loading at = %@, %d", baseURL, 2 + pageNo);
NSAutoreleasePool *pool;
pool = [[NSAutoreleasePool alloc] init];
//NSArray *array = [global_ContentString componentsSeparatedByString:@"@@#"];
NSArray *array1 = [catalogURL componentsSeparatedByString:@"&"];
//NSLog(@"baseURL = %@",baseURL);
NSLog(@"loading catalog image(method: loadCatalogImage).......%@%@",baseURL, [[[array1 objectAtIndex:0] componentsSeparatedByString:@"##"] objectAtIndex:0]);
zoomedImageURL = [NSString stringWithFormat:@"%@%@", baseURL, [[[array1 objectAtIndex:0] componentsSeparatedByString:@"##"] objectAtIndex:1]];
// NSLog(@"Catalog ZOOM URL = %@", zoomedImageURL);//[[array1 objectAtIndex:0] componentsSeparatedByString:@"##"]);//[[[array objectAtIndex:[[global_CatalogRef objectAtIndex:pageNo] intValue]] componentsSeparatedByString:@"##"] objectAtIndex:3]);
[zoomedImageURL retain];
NSLog(@"aaaaaaa = %@",zoomedImageURL);
[webView loadRequest:
[NSURLRequest requestWithURL:
[NSURL URLWithString:
[NSString stringWithFormat:@"%@%@",baseURL, [[[array1 objectAtIndex:0] componentsSeparatedByString:@"##"] objectAtIndex:1]
]
]]
];
}
}
答案 0 :(得分:1)
您的图片是1300 x 1200,而您正在加载30张图片?您可能将耗尽内存。如果您的应用忽略内存警告并占用内存,iOS系统可能会强制您的应用退出。正如我在下面的评论中提到的那样,那么大的图像大约是180megs。太大了。
你真的需要将这么大的图像提供给iphone应用程序,还有很多这样的应用程序?
答案 1 :(得分:1)
任何加载足够资源以占用大量内存的应用都会崩溃。 Apple有几个演示项目专门处理加载大图像的问题,将其分解成较小的比例ci建议你看看它们。
答案 2 :(得分:0)
请问崩溃日志吗?如果可能启用环境变量“NSZombieEnabled”,然后运行该应用程序并查看崩溃日志。这将有助于我们解决确切的问题。那么你为什么要创建并保留“zoomedImageURL”?