상세 컨텐츠

본문 제목

[Objective-C] 소스파일의 구조와 헤더파일 추가(import)

헉!!/Objective C

by 권태성 2012. 1. 3. 20:48

본문

소스파일의 구조
─────────────
Xcode에서 커맨드라인 어플리케이션(Foundation) 프로젝트를 처음 생성하면 나오는 샘플코드로 소스파일인 .m 파일의 구조를 살펴보겠습니다.

 
처음 프로젝트를 생성하면 함께 생성되는 .m 소스파일의 샘플코드 입니다.

위 코드에서 화살표로 표시한 1 부분의 #import로 시작되는 부분은 헤더 파일을 읽어 들이는 부분입니다.
그리고 화살표로 표시한 2 부분이 프로그램의 본체 main 함수입니다.

 자 그럼 import한 헤더파일과 메인함수에 대해서 알아보겠습니다.

헤더파일의 Import
──────────
───── 
프레임워크의 메소드와 라이브러리의 함수 선언 등이 포함된 파일을 헤더파일(head file)이라고 합니다. 소스 파일 내에서 메소드나 함수를 호출하면, 컴파일러는 헤더 파일의 선언을 보고 그것이 올바른 방법으로 호출되고 있는지 체크합니다.
또한, 프로그램 쪽에서 본 프레임워크와 라이브러리의 인터페이스 부분을 API(Application Programming Interface)라고 하는데, 헤더 파일은 API 자체가 기술된 파일이라고 생각할 수 있습니다. 프레임워크와 라이브러리를 사용하기 위해서는 소스 파일의 시작 부분에서 필요한 헤더 파일을 Import해야 합니다.

Foundation 프레임워크의 헤더 파일 import하기
Mac OS X의 Cocoa 환경 중 근간이 되는 프레임워크가 Foundation 프레임워크 입니다. Foundation 프레임워크는 문자열이나 배열 같은 데이터 구조를 관리하는 클래스와 메모리 등을 관리하는 클래스들로 구성됩니다. 다음은 Foundation 프레임워크의 헤더 파일을 읽어오는 예 입니다.

#import <Foundation/Foundation.h>
 
//보통 Foundation.h는 프리픽스 헤더 파일에서 읽어오기 때문에, 이 문장에서는 없어도 동작합니다.

헤더 파일을 Import하는 문법은 #import 뒤에 <프레임워크명/헤더 파일명>의 형식으로 지정해 주면 됩니다.
헤더 파일의 확장자는 '.h' 입니다.

다시 말해, 위의 문은 Foundation 프레임워크의 'Foundation.h'라는 헤더 파일을 읽어온다는 의미입니다.

이 처리는 컴파일을 시작하기 전 전처리기(혹은 선행처리기, Pre-Processor)에 의해 수행됩니다. #import처럼 '#'으로 시작되는 문을 프리프로세서에 대한 명령이라는 의미로 전처리기 지시문(프리프로세서 지시문)이라고 부르기도 합니다.

#import문은 Objective-C에 새로 추가된 기능입니다. 이전의 C언어에서는 #include 문으로 라이브러리를 읽어왔습니다.
#import는 그것을 사용하기 편하게 확장한 것입니다. 예전에는 소스 파일이 복수로 나뉘어 있을 때 프로그램 내에서 서로 중복되었는지 체크해 주지 않으면,  따로 따로 #include를 사용해 동일한 헤더 파일을 여러 번 읽어 들이는 경우가 있었습니다. 그에 비해, #import 문을 사용하면 동일한 헤더 파일은 한 번만 읽어 들입니다. 물론 Objective-C에서도 #include 문을 사용할 수는 있습니다.
 

 직접 제작한 헤더 파일 등 시스템의 표준 라이브러리 이외의 헤더 파일을 import 할 때는 '<>' 대신에 큰따옴표 (" ")로 씌웁니다.
직접 제작한 헤더 파일인 'myHeader.h'를 import 하는것을 예로 들어보면 아래와 같습니다. 

#import "myHeader.h"




위 샘플소스에 2번으로 표시둔 메인문에 대한 내용은 다음 포스트로 이어집니다.
[Objective-C] main 함수
 



관련글 더보기