从父视图中删除webview会在iOS 10上崩溃应用程序

时间:2016-10-04 16:08:26

标签: ios titanium appcelerator appcelerator-titanium

随着最近升级到iOS 10和Titanium SDK 5.5.1.GA,我的应用程序崩溃了 尝试从父视图中删除webview。 webview正确加载HTML,但在尝试返回时,应用程序失败。

代码:

    var aItems = view.children; //<- fails on this line if parent view has a webview child
    for( var i = aItems.length - 1; i >= 0; i-- ) {

        aItems[ i ].backgroundImage = "";
        aItems[ i ].image = "";
        view.remove( aItems[ i ] );
        aItems[ i ] = null;
    }

错误:

    error   10:37:52.693612 -0500   NSURLConnection finished with error - code -1001
    default 10:37:52.851682 -0500   invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.

版本:

    Operating System
      Name                        = Mac OS X
      Version                     = 10.12
      Architecture                = 64bit
      # CPUs                      = 8
      Memory                      = 8589934592
    Node.js
      Node.js Version             = 5.11.1
      npm Version                 = 3.8.6
    Titanium CLI
      CLI Version                 = 5.0.9
    Titanium SDK
      SDK Version                 = 5.5.1.GA
      Target Platform             = iphone

这仅在iOS上失败,而不是Android。

更新: 如果我没有为webview设置任何HTML,该应用程序工作正常。我远程获取html,然后在webview上设置它。

1 个答案:

答案 0 :(得分:0)

您可以在以下之前使这些孩子归零:

for(var i in view.children) view.children[i] = null;

现在您有两种方法可以尝试:

1)使用&#34; removeAllChildren&#34;方法而不是做循环并删除?

view.removeAllChildren();

2)尝试在将其属性归零后将views属性设置为空数组:

view.children = [];

无论哪种方式,我认为这是一个平台错误,您应该创建一个JIRA Ticket