티스토리 뷰
728x90
반응형
viewDidLoad 에 관한 실험
(⚠️ 실험만 있고 분석은 없습니다 ⚠️)
XIB로 만든 뷰컨이랑
스토리보드에서 만든 뷰컨이랑 실험해봅니다.
참고로 저렇게 viewDidLoad 안에서 프린트안하고
isViewDidLoaded 를 찍어보면서 테스트해도 됩니다!
Case 1.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let vc = XIBViewController()
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "StoryboardViewController") as! StoryboardViewController
}
}
둘다 viewDidLoad 안불림
Case 2.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let vc = XIBViewController()
vc.view.removeFromSuperview()
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "StoryboardViewController") as! StoryboardViewController
vc2.view.removeFromSuperview()
}
}
둘다 viewDidLoad 불림
=> 사실 이 케이스 때문에 실험해봤다.
Case 3.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let vc = XIBViewController()
vc.view.addSubview(UIView())
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "StoryboardViewController") as! StoryboardViewController
vc2.view.addSubview(UIView())
}
}
둘다 viewDidLoad 불림
Case 4.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let vc = XIBViewController()
vc.loadViewIfNeeded()
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "StoryboardViewController") as! StoryboardViewController
vc2.loadViewIfNeeded()
}
}
둘다 viewDidLoad 불림
Case 5.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let vc = XIBViewController()
print(vc.view.superview) // nil
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "StoryboardViewController") as! StoryboardViewController
print(vc2.view.superview) // nil
}
}
둘다 viewDidLoad 불림
Case 6.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let vc = XIBViewController()
self.addChild(vc)
let vc2 = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(identifier: "StoryboardViewController") as! StoryboardViewController
self.addChild(vc2)
}
}
둘다 viewDidLoad 안불림
[ 추가 ]
똑똑한 동료분이 알려주셨는데,
UIViewController의 view는 UIView! 타입이니까 호출하려면 메모리에 반드시 올라가있어야하는 것 같다고 하셨어요~
그래서 .view를 하면 메모리에 올라가서 viewDidLoad가 불리는 것 같습니다! (추측)
반응형
'🍏 > iOS' 카테고리의 다른 글
[iOS] Local Notification (0) | 2021.05.31 |
---|---|
[iOS] XCode Template + install script 만들기 (0) | 2021.04.16 |
[iOS] XCode Build System 이해하기 (2) | 2021.02.15 |
[CSS] WKWebview DarkMode 대응 (2) | 2020.12.08 |
[Dark Mode] Dynamic Color의 원리 / cgColor 대응 (0) | 2020.12.02 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- ipad multitasking
- 장고 URL querystring
- flutter deep link
- github actions
- Flutter getter setter
- Django FCM
- ribs
- 구글 Geocoding API
- Django Firebase Cloud Messaging
- Flutter Text Gradient
- Flutter Spacer
- 플러터 얼럿
- flutter 앱 출시
- 플러터 싱글톤
- flutter build mode
- Flutter Clipboard
- 장고 Custom Management Command
- cocoapod
- flutter dynamic link
- Python Type Hint
- DRF APIException
- drf custom error
- Watch App for iOS App vs Watch App
- Sketch 누끼
- SerializerMethodField
- Flutter 로딩
- METAL
- Django Heroku Scheduler
- PencilKit
- Dart Factory
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함