我有一个 Webview,我尝试在其中发布大量数据,比如大约 20 MB,其中包括图像。我已将所有内容收集到一个字符串中,并将该特定字符串传递给 webview。当字符串大小增加时会出现问题。如果字符串的大小较小,它可以正常工作。
我确实通过调试检查了控件是否到达了 WebViewDidFinishLoading 委托方法。完全加载的字符串被上传,但应用程序在几秒钟内崩溃。可能是什么原因?请帮帮我!我一直在敲马头。
我有一个 Webview,我尝试在其中发布大量数据,比如大约 20 MB,其中包括图像。我已将所有内容收集到一个字符串中,并将该特定字符串传递给 webview。当字符串大小增加时会出现问题。如果字符串的大小较小,它可以正常工作。
我确实通过调试检查了控件是否到达了 WebViewDidFinishLoading 委托方法。完全加载的字符串被上传,但应用程序在几秒钟内崩溃。可能是什么原因?请帮帮我!我一直在敲马头。
您可能正在使用过多的内存。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 拆分为多个页面或其他方式来呈现数据。
我在我的一个应用程序中遇到了这个问题。请检查以下链接以获取解决方案。我希望它运作良好。 https://stackoverflow.com/a/56424953/8259188
使用 Instruments 来分析您的应用程序。很有可能您只是内存不足——对于 iOS 应用程序来说,20MB 是相当多的,如果您从部分构建该字符串,您可能会复制许多较小的字符串。了解您的应用程序在崩溃时使用了多少内存会很有用。
你是在应用程序启动时做的吗?如果是这样,启动应用程序可能需要很长时间,并导致看门狗计时器终止应用程序。