帮助在UIWebview中加载大图像?

时间:2011-02-28 10:05:48

标签: iphone ipad memory-management uiscrollview

我使用以下代码在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]
                ]
            ]]
        ];

    }
}

3 个答案:

答案 0 :(得分:1)

您的图片是1300 x 1200,而您正在加载30张图片?您可能将耗尽内存。如果您的应用忽略内存警告并占用内存,iOS系统可能会强制您的应用退出。正如我在下面的评论中提到的那样,那么大的图像大约是180megs。太大了。

你真的需要将这么大的图像提供给iphone应用程序,还有很多这样的应用程序?

答案 1 :(得分:1)

任何加载足够资源以占用大量内存的应用都会崩溃。 Apple有几个演示项目专门处理加载大图像的问题,将其分解成较小的比例ci建议你看看它们。

答案 2 :(得分:0)

请问崩溃日志吗?如果可能启用环境变量“NSZombieEnabled”,然后运行该应用程序并查看崩溃日志。这将有助于我们解决确切的问题。那么你为什么要创建并保留“zoomedImageURL”?