2014-09-30 56 views
0

目前我有一个WebViews的小问题,不释放内存使用的时间,即时通讯调用一些WebView(用户可以打开它们切换回地图(通过Tabbar),并打开一个新的),iOS 8 WebView后的自由内存(swift)

每次一个WebView被称为它使用高达30MB的RAM,所以在10个WebViews应用程序运行到内存警告,所以即时通讯寻找一种方式(因为我发现在其他职位是没有办法它会自动处理)在从webview切换回地图后释放内存。

这是我打电话给我的WebView

import UIKit 

class ViewController_webView: UIViewController { 
/* ################################################## IBOutlets ################################################## */ 
    @IBOutlet weak var webView: UIWebView! 
    @IBOutlet weak var TBB_shop: UITabBarItem! 
    @IBOutlet weak var activity: UIActivityIndicatorView! 
/* ################################################## Home Button ################################################## */ 
    @IBAction func BThome(sender: AnyObject) { 

     var shopurl = "http://google.com" 
     let webviewURL = NSURL(string: shopurl) 
     let request = NSURLRequest(URL: webviewURL) 
     webView.loadRequest(request) 
    } 
/* ################################################## ViewDidLoad ################################################## */ 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     var TBB_shop_img = UIImage(named: "TabbarShopping.png") as UIImage 
     TBB_shop.selectedImage = TBB_shop_img 
    } 
/* ################################################## MemoryWarning ################################################## */ 
    override func didReceiveMemoryWarning() { 

     super.didReceiveMemoryWarning() 
     println("Memory Warning") 
    } 
/* ################################################## viewWillAppear ################################################## */ 
    override func viewWillAppear(animated: Bool) { 

     var shopurl = "http://google.com" 
     let webviewURL = NSURL(string: shopurl) 
     let request = NSURLRequest(URL: webviewURL) 
     webView.loadRequest(request) 
    } 
/* ################################################## Activity Indicator ################################################## */ 
    func webViewDidStartLoad(_ : UIWebView){activity.startAnimating()} 
    func webViewDidFinishLoad(_ : UIWebView){activity.stopAnimating()} 



} 

反正是有使用

override func viewDidDisappear(animated: Bool) { 
     <#code#> 
    } 

发布网页视图的内存使用情况?或者无论如何减少内存的使用?

回答

0

从你的代码中我推断webView是在一个笔尖。

要减少内存占用,您可能需要尝试分别在viewWillAppear和viewWillDisappear中创建和删除webView。

这意味着如果用户要回去,可能需要重新加载内容。从用户的角度来说令人讨厌。

0

释放内存可以取决于你是如何造就的观点 - 这里是一个视图控制器的模态呈现 - 这不会释放先前加载视图控制器的存储器:

let vc = self.storyboard!.instantiateViewControllerWithIdentifier("WebViewController") as WebViewController  
let navigationController = UINavigationController(rootViewController: vc)! 
self.presentViewController(navigationController, animated: true, completion: nil) 

下面的情况下,其中rootViewController被替换为新的控制器 - 在这种情况下,rootViewController的值被改变 - 所以原始视图控制器(如果之前加载的)引用计数降至0并且应该从内存中移除,理论上:

let vc = self.storyboard!.instantiateViewControllerWithIdentifier("WebViewController") as WebViewController 
let navigationController = UINavigationController(rootViewController: vc)!  
let window = UIApplication.sharedApplication().windows[0] as UIWindow 
window.rootViewController = navigationController 

我在代码情况下尝试了后一种情况,就像问题中所描述的那样。我看到内存释放有所改善,但我不得不承认内存没有回到我从哪里开始 - 不知道为什么。我希望有人有更好的解决方案。