[iOS] iOS 화면을 구성하는 파일, Nib와 Xib 개념 정리해보기

2023. 10. 8. 15:48Swift, iOS Foundation

1️⃣ Nib와 Xib 핵심 내용만 정리해보기


Nib와 Xib 두 개 모두 iOS 화면을 구성하기 위한 파일이다.

Nib : Nextstep Interface Builder의 줄임말, 바이너리 파일 (데이터의 저장과 처리를 목적으로 0과 1의 이진 형식으로 인코딩된 파일, 사람은 읽지 못하고 컴퓨터만 읽을 수 있는 언어)이다. 
Xib : Xml Interface Builder의 줄임말, Xml 파일 (데이터들을 쉽게 구조화해서 전달하기 위해 만들어진 언어가 xml이고 이 xml로 쓰여진 파일이 xml 파일, 컴퓨터와 사람 모두 읽을 수 있는 언어)이다. 

왼쪽이 Nib의 바이너리 파일 형태, 오른쪽이 Xib의 xml 파일 형태이다.

 

2️⃣ Nib와 Xib 핵심 내용에서 살을 더 붙여보자!


✔️ 새로운 Cocoa Touch Class 파일을 만들 때, "Also create XIB file"이라는 체크 박스를 만난 적이 있을 것이다. 이때 체크를 했을 때 만들어지는 것이 Xib 파일이다.
✔️ Xcode에서는 Interface Builder를 제공하기에 위와 같은 View를 xml 언어가 아니라 시각적으로 바로 확인할 수 있다.
✔️ Xib 파일을 컴파일하면, nib 파일이 만들어진다.
✔️ 즉, Nib 파일과 Xib 파일은 파일 형식만 다를 뿐, 서로 같은 내용을 담고 있는 것과 같다.
✔️ 컴파일된 nib 파일은 앱의 Bundle(앱 실행에 사용되는 파일이 저장되어 있는 폴더)에 복사된 후, 실행 파일에서 사용된다.
✔️ 우리가 자주 사용하는 ViewController도 xib로 구성되어 있다. (xib 여러 개와 이 xib 파일들의 관계를 정리해 주는 info.plist 파일이 함께 있는 형태)

왼쪽이 Also create XIB file 체크 공간, 오른쪽이 Xcode에서 지원하는 Interface Builder

테이블 뷰를 통해 Xib와 Nib가 사용되는 과정을 리마인드해보자.

Xib 파일로 테이블뷰의 Cell을 만들었을 때,
아래와 같이 UINib를 선언했던 것은 "Xib 파일을 UINib 클래스 객체 형태로 변환하기 위해 Xib 파일명을 넣어 Nib로 만들어준 것"이다.

왜냐?
TableView 객체에 Cell을 등록(register) 하기 위해서는 nib 객체와 재사용될 Cell의 Identifier가 모두 필요했기 때문이다.
그러니 아래 코드를 보면, TableView 객체에 사용될 Cell의 nib 변환 파일과 미리 정의한 Xib의 식별자를 통해 cell을 register 해준 것을 확인할 수 있다.

 

3️⃣ Nib와 관련된 TMI 하나.


Nib가 Nextstep Interface Builder의 줄임말이라고 했는데,
여기서의 NeXTSTEP은 스티브잡스가 Apple에서 첫 번째로 쫓겨나고 만들었던 회사 넥스트사에서 만든 운영체제 이름이다.