티스토리 뷰
728x90
최초로 호출되는 main함수
─────────────────────
함수란 일련의 처리를 모아서 '함수명'으로 호출할 수 있도록 한 것입니다. 이 때 함수에 넘겨주는 값을 인수라고 합니다. 그리고 함수가 처리한 결과를 호출한 쪽으로 되돌려주는 값을 반환값이라고 합니다.
함수는 다음과 같은 형식으로 정의합니다.
반환값의 타입 함수명(인수 리스트){
함수의 내용
return 반환값;
return 반환값;
}
즉, 함수의 내용은 '{'와 '}' 사이에 기술하는 것입니다.
C언어에서는 프로그램을 실행하면 제일 먼저 main이라는 이름의 함수가 호출된다는 규칙이 있습니다. Objective-C에서도 마찬가지 입니다. Sample.m을 살펴보면 다음과 같이 main 함수가 기술되어 있습니다.
int main (int argc, const char * argv[]){
//여기서 int는 반환값의 형식이고 int argc, const char * argv[]는 인수의 리스트 입니다.
//여기서 int는 반환값의 형식이고 int argc, const char * argv[]는 인수의 리스트 입니다.
...
}
반환값의 형식이 int로 되어 있는데, 이것은 정수를 나타내는 자료형입니다. 즉, main 함수는 어떤 정수값을 반환한다는 뜻입니다. 함수명 뒤 '()'안에는 인수들을 기술합니다. 인수가 여러개인 경우에는 콤마로 구분합니다. main 함수에는 커맨드 라인으로부터 인수를 전달할 수 있습니다. 'int argc, const char * argv[]'가 바로 그 부분인데, 이것을 커맨드 라인 인수라고 부릅니다. 커맨드 라인 인수의 모양이 조금 복잡해 보이지만 Xcode가 자동으로 생성해주는 부분이므로 지금은 그 내용에 크게 신경 쓰지 않아도 됩니다.
main 함수의 반환값
함수의 반환값을 호출한 쪽으로 되돌려 주기 위해서 return 문을 사용합니다. main함수의 마지막에는 다음과 같이 '0'이라는 값을 반환하고 있습니다.
return 0; //0이라는 값을 반환한다.
반환값의 형식이 정수를 나타내는 int이므로 '0'이라는 정수값을 반환하고 있는 것입니다. 그런데 왜 '0'을 반환하는 것일까요? 실은 main 함수의 반환값은 프로그램의 종료상황을 판단하는데 사용됩니다. main 함수는 OS에서 호출하는 것이기 때문에 그 반환값은 OS로 반환됩니다. OS는 '0'이 반환되면 프로그램이 정상종료 되었다고 판단하고, '0 이외의 값'은 뭔가 문제가 발생했다고 판단합니다.
main 함수의 분석
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; //1. 메모리 관리
// insert code here... //2. 코멘트
NSLog(@"Hello, World!"); //3. 문자열 출력
[pool drain]; //4. 메모리 관리
우선 1과 4는 일시적으로 이용되는 오브젝트를 모아두고 프로그램 내에서 그 메모리 영역을 해제하기 위한 자동해제 풀이라는 기능의 명령입니다. 가비지 컬렉션을 유효하게 해 놓은 경우에는 필요 없지만 그대로 두어도 문제없습니다.
2는 프로그램에 대한 코멘트입니다. 코멘트 즉, 주석은 컴파일 시에는 무시됩니다. 3은 인수로 주어진 문자열을 출력하는 NSLog 함수입니다.
'Hello, World!'라는 문자열이 출력됩니다.
문장의 끝은 세미콜론 ';'
프로그램에 있어서 하나의 명령은 문장 혹은 문(statement)이라고 하고, 문장의 끝은 세미콜론으로 표시합니다. 가독성을 고려해 중간에 빈 줄을 넣거나 탭 또는 스페이스로 들여쓰기를 하고 메소드와 변수, 괄호 앞뒤로 스페이스를 넣을 수도 있습니다.
하나의 문장을 한 행으로만 기술할 필요는 없으며, 여러 행에 걸치더라도 상관없습니다. 1의 문장은 다음과 같이 기술해도 좋습니다.
NSAutoreleasePool * pool
= [[NSAutoreleasePool alloc]
init] ;
반대로 한 줄에 여러 개의 문장을 기술하는 것도 가능합니다.
NSLog(@"Hello, World!"); NSLog(@"Hello, Korea!"); //한 줄에 2개의 문장을 기술
2종류의 코멘트
프로그램을 읽기 쉽게 만드는데 있어서 적절한 코멘트를 빼놓을 수 없습니다. Objective-C에서는 다음과 같은 2종류의 코멘트 양식을 제공하고 있습니다.
(1)한 줄 코멘트
'//'에서부터 행의 끝까지 코멘트(주석)가 됩니다.
NSLog(@"Hello, World!"); //문자열을 출력
(2)여러 줄 코멘트
'/*'부터 '*/'까지의 범위가 코멘트가 됩니다. 여러 줄에 걸쳐 코멘트를 기술할 수 있습니다.
/*
코멘트 1행
코멘트 2행
*/
코멘트 1행
코멘트 2행
*/
728x90
'헉!! > Objective C' 카테고리의 다른 글
[Objective-C] NSLog 함수 (0) | 2012.01.07 |
---|---|
[Objective-C] Objective-C의 헤더파일 (0) | 2012.01.07 |
[Objective-C] 소스파일의 구조와 헤더파일 추가(import) (2) | 2012.01.03 |
[Objective-C] 가비지 컬섹션(Garbage Collection) (0) | 2012.01.03 |
[Objective-C] Framework(프레임워크) (3) | 2012.01.01 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- tomcat
- iBATIS
- iPhone
- 자바
- Spring
- JavaScript
- MAC OSX 10.7
- JSP
- jQuery
- 오블완
- Java
- oracle
- 자바스크립트
- Objective-C
- Programming
- IT
- 아이폰
- Object C
- 오브젝트 C
- 아이폰 어플리케이션
- MySQL
- Spring Framework
- SQL
- Objective C
- 제이쿼리
- 아이폰 개발
- zero
- 오브젝티브 C
- 티스토리챌린지
- iOS 개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함