[
https://issues.apache.org/jira/browse/CB-13382?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16379787#comment-16379787
]
ASF subversion and git services commented on CB-13382:
------------------------------------------------------
Commit e75c38f65d05b8bbca1178d6ace309a2df7844da in cordova-ios's branch
refs/heads/master from [~surajpindoria]
[ https://gitbox.apache.org/repos/asf?p=cordova-ios.git;h=e75c38f ]
CB-13382 dealloc the webViewEngine (#359)
* CB-13382: (ios) Added destroyWebView method for CDVViewController
* CB-13382: (ios) Remove new function and add to delloc method
> Cordova iOS - Method to correctly destroy CDVViewControllers webView object
> ---------------------------------------------------------------------------
>
> Key: CB-13382
> URL: https://issues.apache.org/jira/browse/CB-13382
> Project: Apache Cordova
> Issue Type: Improvement
> Components: cordova-ios
> Affects Versions: cordova-ios 4.5.0
> Reporter: Nick Deakin
> Assignee: Suraj Pindoria
> Priority: Minor
>
> We have an app where we are using multi CDVViewController instances where a
> user can switch between hybrid apps within the native app.
> The issue that as been lingering for a couple of years is that even though a
> CDVViewController instance can be set to nil, the webview contained within
> still remains in memory. This can be observed when using the safari debugger.
> This is particularly troublesome when the webview is 'closed', then the
> content files in the webview are updated, and finally the webview is
> recreated, showing the old content. Performing a cmd-r in safari debugger
> refreshes the view and shows the updated content.
> We can also do this a [UIWebView reload], but it is not possible if the app
> changes it's URL to a none physical path, e.g.
> file:///xxxxx/myApp/www/index.html becomes file:///xxxxx/myApp/www/home, then
> we get a page load error.
> I've been able to get the webview completely removed by doing the following:
> add the following method to CDVViewController:
> {code:java}
> -(void)destroyWebView {
> self.webViewEngine = nil;
> }
> {code}
> then in my view controllers destroy method:
> {code:java}
> [self.webViewEngine loadHTMLString:@"about:blank" baseURL:nil];
> [self.pluginObjects removeAllObjects];
> [self.webView removeFromSuperview];
> [self destroyWebView];
> {code}
> Setting webViewEngine to nil is an unavoidable step to completely destroying
> the webview, but it is readonly.
> Therefore, i would really appreciate this destroyWebView method, or a similar
> cleanup method being added.
> Android has a method to clean up which is CordovaWebViewImpl.handleDestroy().
> This destroys all the plugins, sets the URL to 'about:blank' and then
> executes engine.destroy()
> Many thanks!
> Nick
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]