Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 클린 코드
- combine
- Xcode
- ios
- Clean Code
- tableView
- SWIFT
- Protocol
- 리펙토링
- rxswift
- collectionview
- 애니메이션
- HIG
- uitableview
- RxCocoa
- ribs
- uiscrollview
- 리펙터링
- map
- UITextView
- UICollectionView
- 리팩토링
- Refactoring
- Human interface guide
- MVVM
- 스위프트
- swiftUI
- clean architecture
- swift documentation
- Observable
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] Memory Leak 쉽게 테스트하는 방법 (Symbolic Breakpoint) 본문
iOS 응용 (swift)
[iOS - swift] Memory Leak 쉽게 테스트하는 방법 (Symbolic Breakpoint)
jake-kim 2023. 9. 13. 01:58일반적인 방법 - deinit에서 출력
- deinit은 class타입에서 해당 인스턴스가 메모리 해제 될 때 호출되므로 이 부분을 출력되는것을 확인하여 쉽게 memory leak이 나고 있지 않다는 확인이 용이
// BaseViewController.swift
deinit {
print("DEINIT: \(self)")
}
- 위처럼 구현하면 콘솔창을 일일이 확인해야하므로, 조금 더 편한 방법은 UIViewController가 메모리 해제될 때 소리로 알려주는 방법
메모리 해제될 때 소리로 알려주는 방법
- 특정 break point가 실행될 때 Xcode에서 소리가 나게끔하는 방법이 존재
- 특정 UIViewController를 닫을 때, 메모리 해제되는 타이밍에 소리가 나게끔 설정해놓고 만약 소리가 나지 않는다면 memory leak이라고 쉽게 판단이 가능
- symbolic breakpoint를 사용하여 구현
Symbolic Breakpoint을 이용한 Memory Leak 테스트
- Xcode에서 break point를 모아놓는 탭 클릭 > + 버튼을 누른 후 Symbolic Breakpoint 선택
- Symbol에 -[UIViewController dealloc]을 입력하여 delloc 메소드 심볼을 입력
- Add Action 버튼 클릭 > Sound 선택
- 콘솔에 출력하는 기능도 넣기 위해서, Action의 + 버튼 클릭
- 카테고리는 Log Message 선택
- 메세지는 DEINIT: @(id)[$arg1 description]@로 입력
- 일반적으로 break point를 걸면 그 포인트에 도달 시 앱이 잠시 일시정지되어, lldb 디버깅 되는 모드가 있지만 매번 일시정지되지 않는것을 원하므로 "Automatically continue after evaluating actions" 선택 체크
(완료)
- MyVC라는 UIViewController를 dismiss하면 위에서 정의한 소리와 함께 console에 메시지가 출력
- DEINIT: @"<ExMemoryLeakTest.MyVC: 0x138128e80>"
* 전체 코드: https://github.com/JK0369/ExMemoryLeakTest
* 참고
https://sarunw.com/posts/easy-way-to-detect-retain-cycle-in-view-controller/
'iOS 응용 (swift)' 카테고리의 다른 글
Comments