본문 바로가기

OS X Programming

Hello World of OS X Programming

수십년 전 부터 늘 그렇듯... 

OS X 프로그래밍도 Hello World 로 시작해야겠지요? ^^


Xcode를 실행하여 Hello World 프로젝트를 만들어 봅시다.





프로젝트를 생성하고 나면 아래의 파일들이 보입니다.


iOS 프로그래밍을 한 번이라도 경험해 보신 분이라면 아주 익숙한 파일들입니다.


그 중 MainMenu.xib 내용을 한 번 보겠습니다.




프로잭트 설정에서 Main Interface가 MainMenu로 설정되어 있다면 (프로젝트 생성 시에 자동으로 설정 되어 있습니다.) 앱을 실행하였을 때 이 파일 안에 있는 메뉴가 OS X의 메인 메뉴에 표시되고 바로 아래의 윈도우 창이 화면에 뜰 것입니다. 

물론 여기서 메뉴를 추가하거나 수정하거나 삭제할 수도 있습니다.


직접 실행 하셔서 한 번 확인해 보시기 바랍니다.




시작이 반이라고 했던가요? Hello World를 보셨으니 이미 반은 하신겁니다. ^^

그럼 윈도우 속성에 대해 조금 살펴보겠습니다.



윈도 타이틀은 물론이고 타이틀바의 버튼들(닫기/최대화/최소화)을 보이거나 숨길 수 있고 Border속성도 지정할 수 있습니다.

그리고 스페이스나 엑스포제 상에서의 동작방법도 지정할 수 있습니다.

윈도 속성은 대강 살펴 보기만 하고

코드를 이용해 윈도 타이틀을 변경해 보겠습니다.


iOS 프로그래밍에서 View 제어를 UIViewController에서 구현하였듯, Window 제어를 위해 NSWindowController를 생성합니다.


이름은 HelloWorldWindowController로 하겠습니다.


이 때 주의할 점은 제어할 윈도우가 이미 MainMenu.xib에 있기 때문에 With XIB for User Interface 옵션을 꺼야 합니다.

그런 다음 MainMenu.xib로 가서 아래 그림처럼 Object를 드래그드랍으로 추가해줍니다.


그리고 해당 클래스를 앞서 생성한 클래스 HelloWorldWindowController로 변경합니다.



그리고 해당 클래스의 window 프로퍼티와 xib 상의 UI 윈도우를 드래그드랍으로 연결합니다.


그리고 HelloWorldWindowController.m에서

아래의 코드를 추가합니다.


 - (void)awakeFromNib

{

[super awakeFromNib];

self.window.title = @"Hello World of OS X Programming";

}


여기서 주의할점은 프로젝트 세팅의 Main Interface에 의해 윈도우가 생성되기 때문에 windowDidLoad가 호출되지 않는다는 것입니다. 그래서 awakeFromNib를 이용했습니다.


그럼 결과를 살펴 볼까요?




여기까지 성공하셨으면 프로젝트 세팅의 Main Interface에 의해 윈도우를 생성하지 않고 코드로 직접 생성하여 메인윈도를 띄워 보겠습니다. 이해를 돕기 위해 앞서 만들었던 HelloWorldWindowController.h/m 파일을 모두 지우고 MainMenu.xib에 추가하였던 Object와 윈도를 모두 지우시기 바랍니다.



그리고 아까처럼 HelloWorldWindowController를 만드는데 이번에는 With XIB for User Interface를 선택하고 생성하기 바랍니다.


그런 다음 AppDelegate.m에서 아래와 같이 코드를 추가합니다.


 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification

{

HelloWorldWindowController *hwwc = [[HelloWorldWindowController alloc]

                                    initWithWindowNibName:@"HelloWorldWindowController"];

[hwwc.window makeKeyWindow];

}


iOS에서는 HelloWorldWindowController.xib 의 파일 Owner가 HelloWorldWindowController라면 init으로만 생성이 가능하지만 OS X 프로그래밍에서는 반드시 NibName을 지정해야 합니다.


그리고 HelloWorldWindowController.m 에 아래와 같이 코드를 추가합니다.


 - (void)windowDidLoad

{

    [super windowDidLoad];

    

    self.window.title = @"Hello World of OS X Programming";

}


awakeFromNib를 사용하였던 아까와는 달리 Owner에 의해 생성되기 때문에 windowDidLoad가 호출되고 여기서 구현이 가능합니다.


그리고 마지막 결과 확인하시기 바랍니다. ^^





'OS X Programming' 카테고리의 다른 글

OS X Dev - NSButton 집중 해부 1  (0) 2012.09.02
OS X Dev - Label과 Button의 기초  (0) 2012.08.30
OS X Programming의 시작  (1) 2012.08.28