본문 바로가기

Tech & Usability

Cocoa Programming for Mac OS X

코코아 프로그래밍
카테고리 컴퓨터/IT
지은이 아론 힐리가스 (인사이트, 2009년)
상세보기

결국 샀다. -_-;
방학인 만큼 열심히 공부하면서 정리한 내용을 여기에 복습 차원으로 올려봐야겠다.
일단 처음이니까, 여기다가~

2009-05-20 | 10:13 AM

Chapter 1: 코코아, 그게 뭐야?


windowserver

windowserver는 바로 user input과 application의 매개체.

Activity Monitor에 항상 등장하는 windowserver가 뭘까 항상 궁금했는데 그건가보다.

input이 있으면 windowserver를 통해 application에 전달되고, 

다시 application에서 (필요시) 화면 출력 갱신 등으로 이어진다.

Cocoa는 windowserver와 input/output 사이에서 정보를 처리해준다.


말로만 듣던 Darwin

NeXTSTEP은 BSD Unix 소스코드 기반이었고,

여기서 발전한 Mac OS X의 소스코드 이름이 Darwin.

그러니까 Darwin은 BSD Unix 소스코드 기반의 발전된 형태.


Cocoa 개발 툴

Xcode와 Interface Builder

Xcode는 gcc와 gdb를 쓰는 MS Visual Studio같은 개발툴이고, Interface Builder는 말 그대로 GUI를 만드는 툴인데, 깜짝 놀랄만 한 건, 라이브러리에서 오브젝트를 드래그하고, 노드를 연결하는 것만으로도 꽤나 깔쌈한 GUI가 만들어진다는 것. 또, Xcode에서 nib/xib 파일(i.e. MainMenu.xib)을 열면 Interface Builder가 열리는데, 여기서 GUI를 편집/저장하면 그게 바로 Xcode에서 인식이 된다는 것. 오 좋다!


객체지향

Cocoa는 Objective-C 기반이라고 하는데, 객체지향이라는 건 내가 이해한 바로는 새로운 언어라기 보다는 프로그래밍의 경향 내지 방법론이다. 클래스와 인스턴스 변수 등으로 독립적이지만 동시에 상호작용적이기도 한 프로그래밍 기법. (아닌가? ㅋ)


클래스(class)

클래스는 객체를 만들어내는 (포토샵의) 도장툴(stamp tool) 같다. 한 클래스를 가지고 여러가지 인스턴스를 만들어 쓴다.


메소드(method)

아 이거 Flash하면서 진짜 이해 안갔던 건데,

객체에 포함된 함수라고 한다.

자세한 건 좀 시간이 지나야 이해할 수 있을 것 같다.


프레임워크(framework)

공용 클래스의 모음으로 일종의 preset 내지 tempate같은 개념인가보다. 언제고 다시 쓸 수 있는 클래스라고 한다.

시스템 기본 프레임워크는 /System/Library/Frameworks 에 있다.

만들 때는 디렉토리 이름뒤에 .framework라고 붙여줘야한다고 한다.

Cocoa의 프레임워크는 크게 Foundation, Appkit(ApplicationKit), Core Data로 이루어진다고 하는데, 이것도 아직은 이해 안간다.


Cocoa Programming에서 주의할 점

대소문자 구별

object 연결


2009-05-20 | 10:20 AM

Chapter 2: 시작해보자!

여기서는 시간에 기반해서 난수를 생성하는 어플리케이션을 만들었다. 

슬슬 따라하니까 만들어진다. 오오!!!

C 배우면서 비슷한 걸 만들어본 적이 있는데 훨씬 간단하게 된다. 아름답다.

이 책 3판이 출시된지 얼마 안되었지만, 자료 이미지는 최신 버전 인터페이스와 약간 달라 헤맸다. 

특히 현재 버전에서는 nib 파일이 아니라 xib 파일이다.

독 윈도(doc window)는 document window라고 되어있다.

Preferences에서 General tab에 있던 Automatically clear log는 Debugging tab에 Auto clear debug console에 있다.


Term

아웃렛(outlet): 다른 객체를 가리키는 인스턴스 변수들

액션(action): 사용자 인터페이스 객체가 호출하는 메소드들

"객체의 아웃렛(outlet)을 정한다": 노드를 연결하여 객체를 연결


Convension

소문자로 시작: 인스턴스 변수, 메서드

대문자로 시작: 클래스


Keywords of Objective-C

클래스 선언 등에 쓰이는 건데 다른 언어와 충돌을 막고자 @로 시작한다고 한다.

@end, @implementation, @class, @selector, @protocol, @property, @synthesize가 있다. 


Reference Library

option command ? 를 누르면 뜨는데, 온라인의 문서를 subscribe하는 방식이다. 아주 맘에 든다.


이렇게



기억할 것

ObjC는 C와 Unix 라이브러리에서 함수를 호출할 수 있다.

Xcode에서 .h/.m 파일간에 왔다갔다 하려면 command option uparrow