3

我有一个 Webview,我尝试在其中发布大量数据,比如大约 20 MB,其中包括图像。我已将所有内容收集到一个字符串中,并将该特定字符串传递给 webview。当字符串大小增加时会出现问题。如果字符串的大小较小,它可以正常工作。

我确实通过调试检查了控件是否到达了 WebViewDidFinishLoading 委托方法。完全加载的字符串被上传,但应用程序在几秒钟内崩溃。可能是什么原因?请帮帮我!我一直在敲马头。

4

4 回答 4

1

您可能正在使用过多的内存。iOS 会杀死这样的应用程序。除了加载如此庞大的 HTML 之外,UIWebView它本身还有内存问题。它被指控在缓存数据(图像等)时占用过多内存

也许清空缓存会有所帮助。在didFinishLaunchingWithOptions尝试这个 -

 NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:0 diskCapacity:0 diskPath:nil];
 [NSURLCache setSharedURLCache:sharedCache];
 [sharedCache release];

此外,当您收到内存警告时,请执行此操作 -

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
    [[NSURLCache sharedURLCache] removeAllCachedResponses];
}

您只是在清除缓存以释放内存。

如果这也不起作用,那么我建议您想办法将 HTML 拆分为多个页面或其他方式来呈现数据。

于 2012-07-06T16:23:48.623 回答
1

我在我的一个应用程序中遇到了这个问题。请检查以下链接以获取解决方案。我希望它运作良好。 https://stackoverflow.com/a/56424953/8259188

于 2019-06-03T10:10:38.887 回答
0

使用 Instruments 来分析您的应用程序。很有可能您只是内存不足——对于 iOS 应用程序来说,20MB 是相当多的,如果您从部分构建该字符串,您可能会复制许多较小的字符串。了解您的应用程序在崩溃时使用了多少内存会很有用。

于 2012-07-06T16:22:57.330 回答
0

你是在应用程序启动时做的吗?如果是这样,启动应用程序可能需要很长时间,并导致看门狗计时器终止应用程序。

于 2012-07-06T16:44:07.527 回答