[iOS] XIB, NIB, Storyboard

Eugenie·2022년 7월 21일
1

XIB, NIB, Storyboard 는 MVC 디자인 패턴을 위해
뷰 코드와 컨트롤러를 분리하는 목적으로 만들어진 파일로
화면을 구성할 때 사용된다.

NIB [ Nextstep Interface Builder ]

화면을 구성하는 클래스들을 바이너리 형태의 압축파일로 저장하고 있는 것이다.

위와 같이 NIB 파일의 내부는 바이너리로 이루어져있다.

🍎 cf.

만약 nib 파일을 직접 확인하고 싶다면
1. cmd + N 으로 새로운 파일을 생성하고 Interface > View 를 추가한다.
2. 추가된 파일은 XIB 파일일 것이다. 이는 NIB 파일로 바꿔줄 수 있다.
3. xibtonib.sh 파일을 생성하여 다음과 같이 작성해주고 실행해준다.

#! /bin/sh
find . -name "*.xib" -type f | awk '{sub(/.xib/,"");print}' | xargs -I % ibtool --compile %.nib %.xib
$ bash xibtonib.sh
  1. XIB 파일이 NIB 파일로 변환된 것을 볼 수 있다.
  2. NIB 파일은 바이너리 파일이기 때문에 위와 같이 내용을 확인하기 어렵다.
    아래와 같이 작성하여 실행하면 위의 사진처럼 출력되는 것을 확인할 수 있다.
$ hexdump -C [NIB 파일 이름]

XIB [ Xcode Interface Builder ]

화면을 구성하는 클래스들을 XML 문법에 맞춰 저장하고 있는 것이다.

위에서 NIB 파일로 변환하기 전의 XIB 파일의 내용이다.

❓ Why XIB

바이너리로 저장하지 않고 XML 형태로 저장하기 때문에
수정된 부분을 알 수 있고
파일로 관리하는 것이 아닌 소스코드로 관리가 가능하다.

직접 수정하려면 XML 문법을 맞춰서 수정해야하기 때문에 번거로울 수 있지만
Xcode 에서는 Interface Builder 를 제공하여 XML 형태가 아닌
그래픽 형태로 수정할 수 있게 도와준다.

🍎 뷰 정보를 담고 있는 XIB 파일을 빌드하게 되면 접근하기 쉬운 바이너리 NIB 파일로 컴파일 되고, 앱의 번들로 복사된 후 실행파일에서 사용된다.

Stroyboard

뷰 정보 및 뷰와 뷰 사이의 관계에 대한 정보를 가지고 있는 파일이다.
뷰 정보인 XIB 의 내용과 뷰 관계 정보를 포함하고 있어서 XML 로 이루어져 있다.

빌드를 하게 되면 컴파일된 Storyboard 파일로 .stroyboardc 파일이 생성된다.

.storyboardc 파일은 패키지 파일로 되어있고
이 내부는 NIB 파일과 NIB 파일을 관리하는 plist 파일이 존재한다.


📚 Reference
iOS의 화면을 그리기 위해선 이것이 필요합니다! XIB, NIB, Storyboard
xibtonib.sh
How to view a binary file?

profile
🌱 iOS developer

0개의 댓글