오늘 공부한 내용
- 디버깅
- Xcode 유틸리티
- UIView
- UIViewController
→ "벌레(버그)를 잡는다" 는 의미로 코드에 실행 과정에서 숨어있는 벌레(버그)를 찾을 수 있는 방법
파란색 화살표를 통해 버그가 의심되는 코드에서 코드 실행을 멈출 수 있는 도구
파란색 화살표에서 실행이 멈춤
해당 지점에서 변수의 값이나 상태를 확인할 수 있음
// UIView 객체 생성
let myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
// 뷰의 배경색상 지정
myView.backgroundColor = UIColor.red
// 뷰를 서브뷰로 추가
self.view.addSubview(myView)
// 뷰의 위치 및 크기 변경
myView.frame = CGRect(x: 50, y: 50, width: 200, height: 200)
class ViewController: UIViewController{
overrid func viewDidLoad() {
super.viewDidLoad()
let myView = UIView(frame: CGRect(x: 100, y: 150, width: 300, height: 300)) //UIView 객체 생성
myView.backgroundColor = UIcolor.red //뷰의 배경색상 지정
self.view.addSubview(myView) // 뷰가 시뮬레이터에 출력될 수 있게 함
myView.fram = CGRect(x: 50, y: 50, width: 200, height: 200) // 뷰의 위치 및 크기 변경
}
}
init(nibName:bundle:) //뷰 컨트롤러 객체가 초기화될 때 호출되는 메서드
//Interface Builder(XIB 또는 Storyboard)와 연결된 경우,
//이 메서드 대신 init?(coder:)가 호출
loadView() //뷰 컨트롤러의 뷰가 메모리에 로드될 때 호출되는 메서드
//뷰 컨트롤러가 Interface Builder로부터 뷰를 로드하는 경우 기본적으로 이 메서드를 구현하지 않아도 됌
//프로그래밍 방식으로 뷰를 구성하려면 이 메서드를 오버라이드하고 뷰를 직접 생성
viewDidLoad() //뷰가 메모리에 로드된 직후에 호출되는 메서드
//뷰 컨트롤러의 초기화 작업, 데이터 로딩, 뷰 설정 등을 수행하기 좋은 시점
viewWillApper(_:) //뷰가 화면에 나타나기 직전에 호출되는 메서드
//뷰가 화면에 보이기 전에 필요한 준비 작업을 수행
//애니메이션과 관련된 작업도 여기서 처리하면 애니메이션과 함께 뷰가 나타남
viewDidAppear(_:) //뷰가 화면에 나타난 직후에 호출되는 메서드
//뷰가 화면에 완전히 나타난 후에 추가적인 작업이 필요한 경우 이 메서드에서 수행
//데이터를 업데이트하거나 애니메이션을 시작할 수 있음
viewWillDisappear(_:) //뷰가 화면에서 사라지기 직전에 호출되는 메서드
//뷰가 화면에 보이지 않기 전에 필요한 정리 작업을 수행
//타이머를 멈추거나 데이터를 저장하는 등의 작업 가능
viewDidDisappear(_:) //뷰가 화면에서 사라진 직후에 호출되는 메서드
//뷰가 화면에서 완전히 사라진 후 추가 작업이 필요한 경우 이 메서드에서 수행
//애니메이션을 멈추거나 메모리를 해제하는 등의 작업 가능
deinit //뷰 컨트롤러가 메모리에서 해제될 때 호출되는 메서드
//뷰 컨트롤러와 관련된 리소스를 정리하고 메모리 누수를 방지하는데 사용
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 화면이 로드되었을 때 필요한 초기화 작업을 수행합니다.
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// 화면이 나타나기 전에 필요한 데이터를 설정하거나 기타 초기화 작업을 수행합니다.
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// 화면이 나타난 후에 사용자 입력을 처리하거나 다른 작업을 수행합니다.
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// 다른 화면으로 이동하기 전에 필요한 작업을 수행합니다.
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// 다른 화면으로 이동한 후 필요한 작업을 수행합니다.
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 100))
myView.backgroundColor = UIColor.red
self.view.addSubview(myView)
myView.frame = CGRect(x: 50, y: 50, width: 200, height: 200)
print("viewDidLoad")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
print("viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
print("viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
print("viewDidDisappear")
}
}
느낀 점
오늘 처음 UI를 만드는 것을 배워봤는데 아직까지 잘 이해가 되지 않는다. 그래도 하나하나 뜯어보면서 이해를 하려고 노력하고 있는데 계속 이런식으로 카피코딩 하면서 익숙해지면 나중에는 수월하게 작성하지 않을까 싶네. 솔직히 말하면 함수도 아직 제대로 이해 못했지만 UI를 만들면서 함수도 같이 공부하면 로직으로만 공부할때보다는 더 쉽게 이해할 수 있지 않을까 싶다. 오늘도 고생했다. 내일도 오늘보다 조금만 더 고생하자. 내일도 화이팅. 수료하는 그 날까지 악으로 깡으로 버텨보자.
내일 공부 목표
- Container View Controller
- UISplitViewController
- UINavigationController
- UITabBarController
- Interface Builder
악 깡 버 !