본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Development/iPhone

[옛 글] Hello World - Interface Builder : File's Owner

by 마즈다 2013. 7. 5.
반응형

최초 작성일 : 2010/03/13 09:43


Interface Builder의 메인 창에서 File's Owner를 선택한 경우의 화면들

nib 파일이란?
Nib는 코코아 어플리케이션에서 사용하는 파일로 인터페이스빌더에서 생성한 
윈도우, 메뉴, 컨트롤과 사용자가 만든 오브젝트들의 레이아웃과 속성등의 정보와 
오브젝트간의 연결과 바인딩등의 정보를 포함하고 있는 파일입니다.

nib 파일 로딩
nib 파일은 로딩 시에 아래와 같은 순서로 처리됩니다.

1) 메모리 로딩 
해당 Nib에 등록된 오브젝트, 관련된 리소스(이미지, 사운드 파일등)를 
메모리 또는 캐쉬로 불러 옵니다.

2) 오브젝트 Unarchive
nib에 냉동포장 되어있던 오브젝트들을 해동합니다. 인터페이스 빌더의 오브젝트들에게는 
initWithCoder 메시지를 발송하며, NSView의 서브클래스들에게는 initWithFrame, 
그외 오브젝트들에게는 init 메시지를 발송합니다. 그리고 인터페이스 빌더에서 설정한 정보에 따라 
오브젝트들간의 연결(actions, outlet)과 바인딩을 설정합니다.

3) awakeFromNib
nib내의 모든 오브젝트들에게 awakeFromNib 메시지를 발송하여, 
오브젝트가 생성이 완료되었음을 알립니다. nib내의 오브젝트들은 
이 메시지를 이용하여 초기화와 관련된 처리를 할 수 있습니다.

그리고 nib내의 윈도우중에 인터페이스 빌더의 Window/Behavior내의 
'Visible at Launch' 속성이 체크되어 있는 윈도우를 오픈합니다.

참조 : OSX에서 Cocoa 맛보기(http://www.cocoadev.co.kr/175)

- File's Owner는 어떤 xib 파일에서든 항상 첫 번째 아이콘이고 
  디스크에서 로드된 xib 파일 객체를 나타낸다.

- File's Owner는 Interface Builder에 기본적으로 포함되면 임의로 삭제/수정 불가능

nib 파일을 로드하고 소유한 객체. 
(MainWindow.xib를 UIApplication 객체가 로드하기 때문에, MainWindow.xib의 File's Owner 객체는 UIApplication 객체임)
- nib 파일은 로드될 때 nib 파일 내에 기술된 것을 그대로 객체화 함
- 메모리에 생성된 nib 객체와, 이를 로드한 객체간의 연결을 위해 File's Owner 가 존재함
- 한 프로젝트에는 여러개의 nib 파일이 존재할 수 있고, nib 파일을 어떤 객체가 로드했느냐에 따라 File's Owner 객체는 다를 수 있음

[출처] iPhone 기초 2.|작성자 일리




현재는 HelloWorld.xib를 Interface Builder에서 연 상태이고 이 상태에서의 File's Owner는
MyViewController로 표시된다.
(xcode의 Groups & Files에서 MainWindow.xib 파일을 Interface Builder에서 열면
File's Owner는 UIApplication 클래스가 된다)

따라서 Outlet은 MyViewController에서 사용되고있는 label, textField가 보여지며
searchDisplayController와 view는 MyViewController의 부모 클래스인 UIViewController에서
사용되는 Outlet이다. 

또한 Referencing Outlet에는 delegate와 textField를 의미하는
RoundStyleTextField가 연결 되어있는데 이는 MyViewController가 UITextFieldDelegate
프로토콜을 따른다고 선언(MyViewController.h)한 것에 대한 표현이다.




Identity Inspector에는 Class Identity 항목에 다음과 같이 xib 파일의 소유자가 되는
클래스가 표시된다.




반응형