일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Protocol
- clean architecture
- MVVM
- swift documentation
- 애니메이션
- map
- collectionview
- 리펙터링
- SWIFT
- Observable
- RxCocoa
- 리펙토링
- UITextView
- swiftUI
- 클린 코드
- Xcode
- HIG
- Refactoring
- tableView
- UICollectionView
- rxswift
- 스위프트
- Human interface guide
- 리팩토링
- uiscrollview
- combine
- Clean Code
- ribs
- uitableview
- ios
- Today
- Total
목록디버깅 (3)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/NFBni/btrWRWHzW7s/bXVeVAHpQwJ2FnjH1olaak/img.png)
LLDB란? LLVM라는 컴파일 프로젝트 안에 LLDB라는 기능이 있는데, Xcode에도 LLDB가 내장 Objective-C, Swift를 지원 LLDB 커멘드 command와 subcommand는 LLDB 디버거의 객체를 의미 LLDB 동작은 Xcode에서 브레이크 포인트를 걸고 실행 시 콘솔창에 (lldb)와 같은 단어가 보이는데 이곳에서 적절한 command를 입력하여 사용 thread list 입력 시 현재 스레드의 정보 획득이 가능 LLDB 커맨드의 특성 LLDB는 XCode에만 있는것이 아닌, 일종의 디버깅 표준이므로 LLDB docu를 참고 모든 명령어에는 단축어가 존재하여 빠른 디버깅에 도움 ex) 실행하는 명령어 run을 r로만 입력해도 동작 1. LLDB 유용한 커맨드 - po po ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d1RtxQ/btrWRXGhBmr/TmLLBc5etBaqrSTqmjpad1/img.png)
Debug Veiw Hierarchy 뷰의 계층 구조를 시각적으로 보여주고, stack으로도 보여주는 가장 널리 알려진 툴 ex) 디버깅할 뷰 준비 class ViewController: UIViewController { private let tableView: UITableView = { let view = UITableView() view.allowsSelection = false view.backgroundColor = .clear view.separatorStyle = .none view.bounces = true view.showsVerticalScrollIndicator = true view.contentInset = .zero view.register(UITableViewCell.self,..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bCdlbU/btqOoMy7SG8/7KP26GDbq5FxX5wKikgSYk/img.png)
디버깅 팁 print()하여 디버깅 하는 것보다, break포인트를 걸고 po로 확인하는 방법이 가장 단순하고 불필요한 코드가 생기지 않는 방법 버튼을 눌렀을 때, 값 디버깅 방법 // // ViewController.swift // Test // // Created by 김종권 on 2020/11/26. // import UIKit class ViewController: UIViewController { var variableValue = 0 var sampleData = (1, 2, 3) @IBOutlet weak var btn: PrimaryButton! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup afte..