Mac OS X/Cocoa2009. 5. 1. 17:18

이글의 작성 의도는 [이곳]을 참조하라.

Hello_MacOSX application을 Finder에서 보면, Hello_MacOSX이라는 이름의 단일 파일로 보이나, 터미널 상에서 보게되면 Hello_MacOSX.app라는 이름의 디렉토리로 보인다.

결국 Finder에서 보이는 모습은 일반 사용자들의 혼란을 줄이기 위해 눈속임을 하고 있는 것이다.


디렉토리의 구조를 보면 다음과 같다.


Hello_MacOSX.app

Contents

Info.plist

MacOS

Hello_MacOSX

PkgInfo

Resources

English.lproj

InfoPlist.strings
MainMenu.nib


내친 김에 iPhone application의 디렉토리 구조도 보자.


Hello_iPhone.app

Hello_iPhone

Info.plist

MainWindow.nib

PkgInfo

RootViewController.nib


Mac OS X application 보다 좀 썰렁해 보인다.


그러나 잘 살펴보면 내부에 하위 디렉토리를 가지지 않을 뿐이지 구성 파일은 동일한 것을 알 수 있다.(파란색이 표기된 넘들이 파일이다.)



최초 작성일 : 2009년 5월 1일 / 최종 수정일 : 2009년 5월 1일

'Mac OS X > Cocoa' 카테고리의 다른 글

Mac OS X과 iPhone application project directory 비교  (0) 2009.05.01
Objective-C  (0) 2009.03.09
Cocoa Programming - XCode 2  (0) 2009.03.08
Posted by 고처리
Mac OS X/Cocoa2009. 5. 1. 16:06
이글의 작성 의도는 [이곳]을 참조하라.


오늘 심심한 김에, Xcode가 생성한 Max OS X application과 iPhone application project를 비교해 보았다.


Mac OS X application은 Cocoa Application으로 생성하였고,

iPhone application은 Navigation-Based Application으로 생성하였다.


기본 파일 구성은 그리 다르지 않아 보인다.

단지 iPhone application 쪽에는 두 개의 클래스 파일이 더 추가되어 있는 것을 볼 수 있다. 이 정도 차이 쯤이야...


그런데 눈에 띄는 부분이 있다. xib 파일의 위치이다. 

Mac OS X application은 각 언어별로 lproj 디렉토리가 생성되고 그 하위에 배치되는 반면,

iPhone application은 프로젝트 루트에 위치하고 있다.


Hello_MacOSX

build

Hello_MacOSX.build

Hello_MacOSX.pbxindex

categories.pbxbtree

cdecls.pbxbtree

decls.pbxbtree

files.pbxbtree

imports.pbxbtree

pbxindex.header

protocols.pbxbtree

refs.pbxbtree

strings.pbxstrings

control

strings

subclasses.pbxbtree

symbols0.pbxsymbols






English.lproj

InfoPlist.strings

MainMenu.xib

Hello_MacOSX_Prefix.pch

Hello_MacOSX.xcodeproj

Info.plist

main.m

Hello_iPhone

build

Hello_iPhone.build

Hello_iPhone.pbxindex

categories.pbxbtree

cdecls.pbxbtree

decls.pbxbtree

files.pbxbtree

imports.pbxbtree

pbxindex.header

protocols.pbxbtree

refs.pbxbtree

strings.pbxstrings

control

strings

subclasses.pbxbtree

symbols0.pbxsymbols

Classes

Hello_iPhoneAppDelegate.h

Hello_iPhoneAppDelegate.m

RootViewController.h

RootViewController.m




Hello_iPhone_prefix.pch

Hello_iPhone.xcodeproj

Info.plist

main.m

MainWindow.xib

RootViewController.xib



최초 작성일 : 2009년 5월 1일 / 최종 수정일 2009년 5월 1일

'Mac OS X > Cocoa' 카테고리의 다른 글

Mac OS X과 iPhone application directory 비교  (0) 2009.05.01
Objective-C  (0) 2009.03.09
Cocoa Programming - XCode 2  (0) 2009.03.08
Posted by 고처리
Mac OS X/Cocoa2009. 3. 9. 20:38
이글의 작성 의도는 [이곳]을 참조하라.

C/C++과 MFC에 너무 오랜 시간 노출된 탓일까?
아니면 이제 나이가 들어서 이해력이 많이 떨어진 것일까?
어쨌든 Objective-C는 한두시간만 보면 알 수 있다는 다른 사람들의 글을 보면서, 나 자신에 대한 성찰을 한번 해보고 있다. ^^

Objective-C는 FSF(Free Software Foundation)의 GNU C 컴파일러의 일부분으로 공개된 표준 컴파일러이다. Cocoa는 Objective-C로 개발되었고, Cocoa 프로그래밍은 대부분 Objective-C로 가능하다.

"@" 예악어

Objective-C에서 새로 추가된 예약어.
  • @interface ~ @end
    *.h 파일 내에 선언되는 클래스의 시작과 끝을 지정

  • @implementation ~ @end
    *.m 파일 내에서 클래스이 구현 부분의 시작과 끝을 지정

  • @"string"
    아스키 문자열을 NSString 문자열로 변환. 2바이트 문자는 UTF8로 처리해야 함. 어떻게 하는지는 아직 모름.

클래스 선언




메서드 선언

함수 선언 앞에는 - 또는 +가 붙는다.

- : 인스턴스 함수
+ : 클래스 함수. static 함수



메서드 호출(메시지 보내기)

[객체명 메시지명]의 형태로 호출한다. 메시지명은 메서드를 의미한다. 메서드를 호출하기 위해서는 객체명의 그 객체가 가지고 있는 메서드명을 적어 주는데, 이렇게 메서드를 호출하는 것을 "메시지를 보낸다"라고 표현한다.

Cocoa의 클래스중 하나인 NSMutableArray를 이용한 예를 보자.

[NSMutableArray alloc]
NSMutableArray 클래스의 alloc 메시지를 보낸다. alloc 메시지는 NSMutableArray 클래스의 객체를 생성한 후, 그 포인터를 반환한다.

1 : NSMutableArray *foo;
2 : foo = [NSMutableArray alloc];
3 : [foo init];

1 : NSMutableArray 클래스의 포인터 변수 선언
2 : NSMutableArray 클래스에 alloc 메시지를 보내, NSMutableArray 클래스의 객체를 생성하고, 포인터를 반환 받는다.
3 : NSMutableArray 클래스 객체인 foo에 init 메시지를 보내어 객체를 초기화한다. 이때 메시지를 받는 것은 NSMutableArray 클래스가 아닌 foo 객체가 된다. 이런 상태를 'foo는 init 메시지의 receiver이다'라고 하고, 메시지는 selector라고 부른다.

위의 코드를 아래와 같이 작성할 수도 있다.

NSMutableArray *foo;
foo = [[NSMutableArray alloc] init];

메시지 호출 시 인자의 전달은 다음과 같이 한다. foo 객체의 addObject 메시지를 호출하면서 인자로 bar를 전달한다.
[foo addObject:bar]

메시지에 인자를 전달하는 경우 "셀렉터이름:인자이름"의 형태로 사용한다.

두 개 이상의 인자를 전달하는 경우에는 다음과 같이 한다.
[foo insertObject:bar atIndex:5]

셀렉터에 전달되어 지는 두 번째 인자부터는 "인자이름:값"의 형태로 값을 전달한다.

사실 이 문법은 아직 그 편리함을 느끼지 못하는 부분이다. 헷갈리기만 한다.


Protocol




Category




참고 자료

일단 부족한 기억력을 보충하기 위해 링크부터 걸고 보자. 자료를 공개해 주신 모든 분들께 감사... 꾸벅






최초 작성일 : 2009년 3월 9일 / 최종 수정일 : 2009년 3월 10일
Posted by 고처리
Mac OS X/Cocoa2009. 3. 8. 15:31
이글의 작성 의도는 [이곳]을 참조하라.

다른 분의 블로그로 링크 이어집니다. ^^

1.1 Xcode 구하기 - http://cocoadev.co.kr/1
1.2 Xcode를 이용한 첫 cocoa 프로그램 Hello - http://cocoadev.co.kr/3
1.3 Hello 프로그램 기능 추가 - http://cocoadev.co.kr/4
1.4 간단한 계산기 프로그램 - http://cocoadev.co.kr/5
1.5 NSView를 이용한 그리기 - http://cocoadev.co.kr/7
1.6 SimpleViewer 이미지 뷰어 (1) - http://cocoadev.co.kr/11
1.6 SimpleViewer 이미지 뷰어 (2) - http://cocoadev.co.kr/12
1.7 업그레이드된 계산기 프로그램 (1) - http://cocoadev.co.kr/13
1.7 업그레이드된 계산기 프로그램 (2) - http://cocoadev.co.kr/14
1.8 간단한 슈팅게임 (1) - http://cocoadev.co.kr/37
1.8 간단한 슈팅게임 (2) - http://cocoadev.co.kr/43
1.10 기본 콘트롤 사용법 (1) - http://cocoadev.co.kr/94
1.10 기본 콘트롤 사용법 (2) - http://cocoadev.co.kr/99
간단한 ToDo 어플리케이션 만들기 - http://cocoadev.co.kr/102
간단한 웹브라우저 만들기 - http://cocoadev.co.kr/127





최초 작성일 : 2009년 3월 8일 / 최종 수정일 : 2009년 3월 8일

'Mac OS X > Cocoa' 카테고리의 다른 글

Mac OS X과 iPhone application directory 비교  (0) 2009.05.01
Mac OS X과 iPhone application project directory 비교  (0) 2009.05.01
Objective-C  (0) 2009.03.09
Posted by 고처리