스토리보드를 학습하는 과정에서 스토리보드는 어떻게 실행되는 것인지에 대해 학습해보고자 합니다. 스토리보드에 대해 알기 위해선 XIB와 NIB에 대한 이해가 필요합니다.
XIB란 Xcode Interface Builder의 약자로, 화면을 구성할 때 사용되는 XML 형식의 파일입니다. XML 파일이기 때문에 바이너리보단 사람이 이해하기 쉽고, 수정된 부분을 확인할 수 있어 소스코드로 관리할 수 있습니다. 직접 수정을 하기 위해선 XML 문법에 맞춰서 수정해야 하지만, Xcode에서 Interface Builder(스토리보드)를 제공하여 GUI 형태로 수정할 수 있도록 해줍니다.
NIB는 Nextstep Interface Builder의 약자로, 화면을 구성하는 클래스들을 바이너리 형태의 압축 파일로 저장하는 파일입니다.
프로그래밍 언어가 실행되기 위해선 해당 언어를 작성하고 실행하면 컴퓨터가 이해할 수 있는 기계어인 바이너리 형식으로 변환되고, 컴퓨터는 이를 해석하여 실행합니다. 스토리보드 또한 프로그래밍 언어인 Swift 또는 XML 파일을 바이너리 파일로 컴파일되어 실행되어야 합니다. 즉, XIB 파일을 실행하면 NIB 파일이 만들어지게 되고, NIB 파일을 읽어 실행되는 과정으로 컴파일이 일어납니다.
NIB와 XIB는 저장 형식의 차이점이 있지만, 기능적으로는 동일합니다. 원래는 NIB만 있었는데, 소스코드로의 관리를 용이하게 하기 위해 XIB가 탄생했습니다.
스토리보드는 XIB 파일들과 뷰 관계정보를 가지고 있는 XML 형식의 파일입니다. 여러 가지 XIB파일들과 설정을 관리하는 info.plist로 이루어진 XML 파일인 것입니다. 따라서 스토리보드를 컴파일한다면 .storyboardc라는 파일이 생성되는데, 이 파일은 패키지 파일로, 여러 가지 NIB파일과 이를 관리하는 info.plist로 구성됩니다.
즉, 스토리보드가 실행되면 스토리보드 안에 존재하는 XIB 파일들은 NIB 파일로 변환되어 info.plist의 설정에 따라 실행되는 것입니다.
이러한 실행 과정을 통해 XIB 파일은 개별적인 UI 컴포넌트를 개발하는데 사용하지만, 화면 전환에 대한 개념이 없음을 유추할 수 있습니다. Interface Builder를 통해 XIB 파일을 생성하면 개별 컴포넌트에 대해 개발할 수 있는 이유가 바로 이러한 이유 때문인 것이었습니다.
Storyboard와 NIB 파일을 직접 확인해보았습니다.
스토리보드 → 우클릭 → [Open As] → [Source Code]를 확인해보면 다음과 같이 XML 형식으로 구성되어 있음을 알 수 있습니다.
[Library] → [Developer] → [Xcode] → [Derived Data]를 통해서 해당 프로젝트에 접근한 다음 [Base.Iproj]를 보면 Main.storyboardc를 확인할 수 있었습니다. storyboardc는 storyboard가 컴파일된 패키지입니다.
Main.storyboardc를 ‘패키지 내용 보기’로 열어준다면 Info.plist와 nib 파일들을 확인할 수 있습니다.
nib 파일은 바이너리 형식이기 때문에 열어도 이해할 수 없는 형식이었습니다. 물론 바이너리로 변환하면 0과 1로 나타날 것입니다.
'iOS > UIKit' 카테고리의 다른 글
[UIKit] 메모리 관점에서의 CollectionView, PageView, ScrollView의 동작 방식 (2) | 2025.01.29 |
---|---|
[iOS-UIKit] Final 키워드를 사용하는 이유 (최적화의 관점) (0) | 2025.01.19 |
[UIKit] 문자열 보간법의 실행 구조 (feat. UI*.text) (0) | 2025.01.06 |
[UIKit-Code] UIKit 코드 기반 프로젝트 세팅하기 (스토리보드 없애기) (0) | 2023.12.27 |