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
- XIB 파일이 NIB 파일로 변환된 것을 볼 수 있다.
- NIB 파일은 바이너리 파일이기 때문에 위와 같이 내용을 확인하기 어렵다.
아래와 같이 작성하여 실행하면 위의 사진처럼 출력되는 것을 확인할 수 있다.$ hexdump -C [NIB 파일 이름]
XIB [ Xcode Interface Builder ]
화면을 구성하는 클래스들을 XML 문법에 맞춰 저장하고 있는 것이다.
위에서 NIB 파일로 변환하기 전의 XIB 파일의 내용이다.
❓ Why XIB
바이너리로 저장하지 않고 XML 형태로 저장하기 때문에
수정된 부분을 알 수 있고
파일로 관리하는 것이 아닌 소스코드로 관리가 가능하다.
직접 수정하려면 XML 문법을 맞춰서 수정해야하기 때문에 번거로울 수 있지만
Xcode 에서는 Interface Builder 를 제공하여 XML 형태가 아닌
그래픽 형태로 수정할 수 있게 도와준다.
Stroyboard
뷰 정보 및 뷰와 뷰 사이의 관계에 대한 정보를 가지고 있는 파일이다.
뷰 정보인 XIB 의 내용과 뷰 관계 정보를 포함하고 있어서 XML 로 이루어져 있다.
빌드를 하게 되면 컴파일된 Storyboard 파일로 .stroyboardc
파일이 생성된다.
.storyboardc
파일은 패키지 파일로 되어있고
이 내부는 NIB 파일과 NIB 파일을 관리하는 plist 파일이 존재한다.
📚 Reference
iOS의 화면을 그리기 위해선 이것이 필요합니다! XIB, NIB, Storyboard
xibtonib.sh
How to view a binary file?