を私は以下の機能を持っているが、メインバンドル内に保存されたファイルの内容を取得することで、テキストビューのテキストを変更します。クリアメモリ - iOSのスウィフト
func setUpText() {
let path = Bundle.main.path(forResource: book, ofType: "txt")
var rawText = ""
do {
rawText = try String(contentsOfFile: path!, encoding: String.Encoding.utf8)
} catch {
print("Contents of File could not be retrieved")
}
myTextView.text = rawText
}
すると、ユーザbookの値を変更すると、この関数が呼び出され、テキストビューに新しいテキストが設定されます。すべて正常に動作しますが、CPU、メモリ、ディスク、ネットワークの使用状況を示すデバッグナビゲータで、テキストを再投入するたびにメモリが上昇し続けることに気付きました。テキストを変更する前にメモリをクリアするにはどうすればよいですか?
はここsetUpTextがのviewDidLoadで呼び出された方法は次のとおりです。私もdropdownMenu.didSelectItemAtIndexHandlerの閉鎖で、以下の機能にsetUpTextを呼んでいる
aiv.startAnimating()
myTextView.text = ""
DispatchQueue.main.async {
self.setUpText()
self.aiv.stopAnimating()
self.aiv.isHidden = true
}
。これが私の問題の原因です。これを追加すると、インストゥルメントによって検証されたようにメモリがダウンすることなく登ります。私は保持サイクルを引き起こす何も表示されません
func createDropdownMenu(title: String, items: [AnyObject]) -> BTNavigationDropdownMenu {
let dropdownMenu = BTNavigationDropdownMenu(navigationController: self.navigationController,
containerView: self.navigationController!.view,
title: title,
items: items)
dropdownMenu.didSelectItemAtIndexHandler = { (indexPath: Int) ->() in
self.chapterIndex = indexPath + 1
self.setUpText()
}
return dropdownMenu
}
コードがよく見え、メモリがリークしないはずです。あなたはたぶん閉鎖の中からそれを呼びますか? – shallowThought
実際には、私は閉鎖の中からそれを呼び出す、私はちょうどそれが呼び出される方法を示すために投稿を編集した。 –