【问题标题】:iPhone Application crashes, when I load a HTML string(huge data) onto WebView当我将 HTML 字符串(大量数据)加载到 WebView 时,iPhone 应用程序崩溃
【发布时间】:2012-07-06 16:18:51
【问题描述】:

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

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

【问题讨论】:

    标签: iphone ios objective-c uiwebview


    【解决方案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 拆分为多个页面或其他方式来呈现数据。

    【讨论】:

    • 如果他想将 HTML 显示为单个页面,如何将单页 HTML 拆分为多页 html 并将其加载到 webview 中?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2015-02-01
          • 1970-01-01
          • 2011-10-07
          • 1970-01-01
          • 2020-11-07
          • 1970-01-01
          • 2023-04-11
          • 2020-04-19
          • 1970-01-01
          相关资源
          最近更新 更多