스터디/iOS

iOS의 화면을 그리기 위해선 이것이 필요합니다! XIB, NIB, Storyboard

Dalmangyi 2018. 7. 20.

iOS 개발을 하다보면 흔히 접할 수 있는 단어가 XIB, NIB, Storyboard 이에요

그렇다면 이것들이 무엇이고 어떤 관계가 있는지 알아보아요


어디에 사용되나요?

- XIB, NIB, Storyboard는 파일형태로 되어있고, 화면을 구성할때 사용됩니다

  MVC 디자인 패턴을 위해 뷰 코드와 컨트롤러를 분리하는 목적으로 만들어진 파일 입니다


NIB 파일은 무엇인가요?

- Nextstep Interface Builder의 약자로, 화면을 구성하는 클래스들을 바이너리 형태의 압축 파일로 저장하고 있습니다


<바이너리로 이뤄져있는 NIB파일 내부를 바라본 모습>




XIB 파일은 무엇인가요?

- Xcode Interface Builder의 약자로, 화면을 구성하는 클래스들을 XML문법에 맞춰 저장되고 있습니다. 


XIB파일은 왜 생기게 되었나요?

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

<XML형태의 XIB파일을 변경후 비교해본 모습>


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


<XIB파일로 Xcode의 Interface Builder로 본 모습>


프로그램이 뷰 정보를 읽어드리는 방법

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


<XIB를 컴파일하면 NIB가 만들어집니다>




<XIB파일이 빌드과정후 생성된 app 패키지안에 NIB파일로 저장된 모습>





그렇다면 Storyboard는 무엇인가요?

- 스토리 보드는 뷰 정보와 뷰와 뷰 사이의 관계에 대한 정보를 가지고 있는 파일 입니다. 그렇기 때문에 뷰 정보인 XIB의 내용과 뷰 관계정보를 포함하고 있어서 XML로 이뤄져 있습니다. 빌드를 하게 되면 컴파일된 storyboard파일로 .storyboardc라는 파일이 생성됩니다. 

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


<.storyboarc파일의 패키지 내부 모습>




<Storyboard파일 내부 구조>




이 글로 인해서 XIB와 NIB을 혼용해서 사용하지 않길 바랍니다 ㅎㅎ



댓글