从iOS视图中移除Web视图崩溃iOS 10上的应用程序

问题描述:

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

代码:

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的没有。

更新: 如果我没有设置任何HTML到web视图,应用程序工作正常。我正在远程获取html,然后在webview上进行设置。

+0

如果您可以在独立应用程序中重现此错误,那很可能是一个错误。应该在Appcelerator Jira中报告哪些内容:https://jira.appcelerator.org/secure/Dashboard.jspa 如果这样做,请在此处注释链接故障单! –

+1

https://jira.appcelerator.org/browse/AC-4560 deliberateSnafu

之前还是可以空儿:

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

现在你有两种方式,你可以尝试:

1)使用“removeAllChildren”的方法,而不是做循环并删除?

view.removeAllChildren(); 

2)尝试归零之后的意见属性设置为空数组的孩子:

view.children = []; 

无论哪种方式,我认为这是一个平台的bug,你应该创建一个JIRA Ticket

+0

我会试试看,并告诉你它是否有效。谢谢你的帮助! – deliberateSnafu

+0

我试过你的解决方案,但它没有解决问题。我最终构建了一个测试应用程序,但仍然能够创建问题。我正在为bug提供一张杰拉票。谢谢你的帮助。 – deliberateSnafu