반응형
최근 다시 iOS 앱을 만들면서 처음 보는 에러가 발생했다.
굳이 수정하지 않아도 앱은 잘 돌아간다.
때문에 처음에는 귀찮아서 무시하고 개발했지만
갈수록 눈에 거슬려서 구글링해보니 스택오버플로우에 딱 맞는 답변이 있었다.
원인은 CustomView Class를 만들 때 .xib 파일을 로드하는 부분 때문이었다.
예전에 썼던 CustomView 게시글에서 init 할 때
1
2
3
4
5
6
|
private func commonInit(){
Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
addSubview(customView)
customView.frame = self.bounds
customView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
|
cs |
Bundle.main.loadNibNamed() 이런 식으로 .xib 파일을 로드했는데
이렇게 하지 말고 아래 line2처럼 Bundle을 제대로 생성해 주라고 한다.
1
2
3
4
5
6
7
|
private func commonInit(){
let bundle = Bundle(for: CustomView.self)
bundle.loadNibNamed("CustomView", owner: self, options: nil)
addSubview(customView)
customView.frame = self.bounds
customView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
|
cs |
스택오버플로우 답변의 코멘트에 따르면
Interface Builder가 렌더링 할 때 Application 에서 돌아가는 게 아니기 때문에
Main Application Bundle이 없어서 이런 에러가 발생하는 거라고 한다.
이제 Xcode 상에서는 에러로 표시되고 실제 앱에서는 잘 돌아가는 이유가 설명된다.
이제야 신발에 붙은 껌딱지가 떼진 느낌이다.
반응형
'이상 > iOS' 카테고리의 다른 글
[iOS] GCD - DispatchQueue (0) | 2021.03.11 |
---|---|
[iOS] Alamofire로 API 호출하기 (+ CocoaPods 사용법) (0) | 2021.02.05 |
[iOS] UITableView Drag & Drop으로 Row 이동 (0) | 2021.02.02 |
[iOS] UITableViewCell Swipe Delete (0) | 2021.02.02 |
[iOS] UIRefreshControl의 발견 (0) | 2020.07.15 |