[Xcode]Instruments(2)-使用例
6284 ワード
以前の位置決めでは,計器のコンポーネントと概念を理解した.
今回は機器を利用してメモリ漏れを制御してみましょう.
例は、https://www.youtube.com/watch?v=sp8qEMY9X6Qビデオのコードを参照している.
「instruments profiles」から「Alllocation」を選択します.
Detailパネルの一番下のフィルタ部分からツールを挿入します.
次のようにDetail paneを表示できます.
ここで注意すべき部分は#と#のトレーニング部分です.
#現在のメモリに割り当てられている各オブジェクトの数を計算します.
#Transionは、割り当て解除されたオブジェクトの数を表示します.
上のコードを振り返ると、下は川です.
だからこの川が混乱状態に陥るのを防ぐために、
参照クラスを修復すると、割り当て解除を求めるメッセージが表示されます.
簡単な例では、ツールを使用して参照ループを直感的に表示し、メモリを管理できます.
今回は機器を利用してメモリ漏れを制御してみましょう.
サンプルコード
例は、https://www.youtube.com/watch?v=sp8qEMY9X6Qビデオのコードを参照している.
完全なコード
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// rightBarButton 추가
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Show Red", style: .plain, target: self, action: #selector(handleShowRedController))
}
// button 기능
@objc func handleShowRedController() {
navigationController?.pushViewController(RedController(), animated: true)
}
}
// 참조 class
class Service {
var redController: RedController?
}
// navigation push ViewController
class RedController: UITableViewController {
// 소멸시 출력될 키워드
deinit {
print("OS reclaming controller")
}
let service = Service()
override func viewDidLoad() {
super.viewDidLoad()
tableView.backgroundColor = .red
service.redController = self
}
}
「instruments profiles」から「Alllocation」を選択します.
Detailパネルの一番下のフィルタ部分からツールを挿入します.
次のようにDetail paneを表示できます.
ここで注意すべき部分は#と#のトレーニング部分です.
#現在のメモリに割り当てられている各オブジェクトの数を計算します.
#Transionは、割り当て解除されたオブジェクトの数を表示します.
上のコードを振り返ると、下は川です.
だからこの川が混乱状態に陥るのを防ぐために、
参照クラスを修復すると、割り当て解除を求めるメッセージが表示されます.
// 참조 class
class Service {
weak var redController: RedController?
}
簡単な例では、ツールを使用して参照ループを直感的に表示し、メモリを管理できます.
Reference
この問題について([Xcode]Instruments(2)-使用例), 我々は、より多くの情報をここで見つけました https://velog.io/@mytrace/Xcode-Instruments-2-활용예시テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol