Swiftでメモリを解放する方法を教えてください。
ある処理をクラス化しているのですが、処理が行われるたびにメモリが増えていきます。何度も繰り返していると1GBまでメモリの使用量が増えていき、アプリが落ちてしまいます。
初心者なので詳しくは分かりませんが、生成されたインスタンスが破棄されたままになっているのではと推測しています。
ちなみにこれが起こる処理はふたつあります。
前提としてTableViewでRSSを表示するアプリです。
①ページ遷移先のデザインを別にクラス化しており、セルが選択されるたびにそのクラスのインスタンスが生成される
②表示切り替えボタンを押すと、TableViewの表示方法が変更される。その表示を切り替えるたびに、一度ViewControllerを消して再描画している
この二つのときにメモリの消費が激しく、アプリが落ちてしまいます。
autoreleasepool
を使用してもうまくいきませんでした。
説明が下手で理解しづらくて申し訳ありません。
思い当たる方法があれば、ご教示いただけると光栄です。
よろしくお願いいたします。
追記
ソースコードを追加しました。
// WebviewController.swift class WebviewController: UIViewController, UIWebViewDelegate { override func viewDidLoad() { super.viewDidLoad() let screenwidth = self.view.bounds.size.width let screenheight = self.view.bounds.size.height let urlString = NSURL(string: "http://hogehoge.com") let urlRequest = NSURLRequest(URL: urlString!) var webview = UIWebView() webview.frame = CGRectMake(0, 0, screenwidth, screenheight - 45) webView.delegate = self webView.loadRequest(urlRequest) let toolbar = Toolbar() self.view.addSubview(toolbar.makeToolbar()) }
// Toolbar.swift class ToolBar: UIView { func makeToolvar() -> UIToobar { // Toolbar作成 let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: screenWidth, height: 45.0)) toolbar.backgroundColor = UIColor(red: 245/255, green: 245/255, blue: 245/255, alpha: 1.0) return toolbar } }
上記のWebviewController
が開くたびに、ToolbarController
のインスタンスが生成されます。
WebviewController
を閉じてもToolbarController
のインスタンスが破棄されていないのか、メモリが増えていって困っています。
