'@라는 NSString상수'에 해당되는 글 1건

  1. 2010.02.28 Objective-c를 개발하기 위한 환경
여러 방법이 있을 것이다. 윈도우에서 리눅스처럼 터미널 환경을 만들어 *.m 파일을 생성하고 빌드할 수 있는 cygwin도 있고 또한 해킨토시라하여 부팅시 레오파드로 부팅하는 방법도 있지만 형편이 된다면 그냥 맥을 구입하는 것이 손쉽다.
우선 http://developer.apple.com/에서 개발자 등록 후 필요한 SDK를 받을 수 있다.
받아야할 것은 Xcode라고 되어있는 버튼이나 텍스트를 찾으면 된다. 이것하나만 있으면 개발부터 디버깅 및 시뮬레이터, Interface builder까지 개발에 필요한 모든 것을 받을 수 있다. (현재 시간 ipad sdk3.2 베타까지 배포된 상태이며 포스팅은 안전한 iphone sdk를 위주로 한다.
 ipad는 좀 더 까다롭다. 가로,세로에 및 기타 정책을 일부 생략할 수 없기 때문에 좀 더 개발에 고려할 것이 많고 까다롭다. )

이처럼 개발 툴을 설치한 다음 선택하는 것이 개발 방법인데 이미 Xcode를 설치했으므로 터미널 대신에 Xcode와 콘솔을 사용할 것이다. 

Xcode를 실행시키면 File에 new project를 선택하고 Mac OS X아래에 command line utility를 선택하고 오른쪽 메뉴에서 foundationTool을 선택하여 objective-c의 기본 프레임워크를 설정한다. 지금 만든 프로젝트는 objective-c만을 위한 프로젝트이며 나중에 Iphone, Ipad의UIView나 IBAction(As3.0에서 이벤트)등을 다루기 위해서는 Application메뉴에서 서브 프로젝트(뷰베이스, 윈도우베이스 등) 형태를 선택하여야한다.

프로젝트가 생성되면 아무것도 가져오지 않은 단순히 Objective-C만의 Foundation.h(objc에서 제공하는 라이브러리) 만을 import하여 가져오는 '프로젝트이름.m'파일이 생성된다. objc의 확장자는 *.m이다 물론 c/c++처럼 인터페이스 역할을 하는 헤더파일도 존재하고 이름도 똑같이 *.h이다.

이제 실행 파일을 만들었으니 항상 최초로 하는 'Hello world!'를 프린해 보자.

Xcode에서 해당 m파일을 열면 아래와 같이 기본적으로 코딩이 들어가 있다. 

#import <Foundation/Foundation.h>


int main (int argc, const char * argv[]) {

    //메모리 공간을 예약

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];


    // insert code here...

    NSLog(@"Hello, world!");

    //할당된 메모리 풀을 해제

    [pool drain];

    return 0;

}


사실 Xcode에서 프로젝트 생성시 위처럼 기본틀을 만들어 주기 때문에 'Hello, world!'를 프린하기위해서 아무것도 할 필요가 없다.

다만 특이한 것은 c에서 printf(); 또는 trace();로 사용하던 것이 NSLog();로 된 것이며 문자열에 @가 붙는다는 것이다.

추측컨데 Objective-C의 라이선스를 받아 발전시킨 회사 "Next Software"의 이름을 빌어 자기들이 만든 메서드나 클래스에는 항상 NS가 붙는 것 같다. 문자열 상수앞에 붙은 @도 역시 string에서 차별된 NSString객체를 사용하기 위함이다. 

만약 @를 제외하고 C스타일의 스트링 상수를 작성한다면 NSLog()에서 인식하지 못하고 실행되지 않는다. 

프로젝트 빌드는 command+enter나 build and go버튼(xcode에서의 용어로는 build and run)을 클릭하면 콘솔창에서 프린트 되는 것을 볼 수 있다.

참조)
자주사용되는 확장자
.c : c언어 소스파일
.cc, .cpp : c++언어 소스파일
.h : 헤더파일
.m : Objective-c 언어 소스파일
.mm : Objective-c++ 언어 소스파일
.pl : perl
.o : 컴파일된 파일


Posted by 버터백통