상세 컨텐츠

본문 제목

[Objective-C] 메소드의 호출방법에 대하여

헉!!/Objective C

by 권태성 2012. 1. 7. 20:42

본문


메소드의 호출 방법에 대한 예비지식
───────────────────────────
Objective-C의 메소드 호출 방법은 조금 특수합니다. Java나 C++ 같은 일반적인 객체지향 언어를 경험하신 분들은 익숙해지기 전까지 조금 어렵게 느껴질 수도 있습니다. Objective-C의 메소드 호출 방식은 다음과 같습니다.

메시지 방식
[객체  메시지]

전체를 대괄호 []로 에워싸고 객체와 메시지는 사이에 공백을 두어 구분합니다. 이렇게 하면 Receiver인 객체로 메시지가 보내지고, 대응하는 메소드가 호출됩니다. 메시지의 반환값을 변수에 대입할 때는 다음과 같이 합니다.


메시지의 반환값을 변수에 대입
변수 = [객체 메시지]

이 때 메시지가 게터 메소드처럼 인수를 가지지 않는 메소드인 경우에는 메소드의 이름을 그대로 기술하면 됩니다.
예를 들어, Person 클래스의 인스턴스인 'myself'의 name 메소드를 호출해서 가져온 이름을 myName이라는 변수에 대입하기 이ㅜ해서는 다음과 같이 기술하면 됩니다. 
 
myName = [myself name];
 
인수를 가진 메소드
인수가 하나인 메소드는 다음과 같이 호출할 수 있습니다.

인수가 하나인 메소드의 호출
[객체 메소드:인수]

 메소드와 인수는 콜론 ':'으로 구분합니다. 예를 들어 setMail: 메소드에 newAddress라는 변수를 인수로 넘겨주기 위해서는 다음과 같이 기술합니다.

[father setMail:newAddress];
 
2개 이상의 인수를 가지는 메소드
2개 이상의 인수를 가지는 메소드의 경우, 그 뒤에 '라벨:인수'의 조합으로 기술하면 됩니다. 예를 들어, 인수가 두 개인 메소드는 다음과 같이 기술합니다.

인수가 둘인 메소드의 호출
[객체 메소드:인수1 라벨:인수2];
 
라벨이란 인수를 설명하는 키워드입니다. 뒤에서 설명하겠지만, 정확히 말하자면 메소드 이름의 일부입니다. 예를 들어 메일주소와 이름을 동시에 설정하는 메소드가 있다고 가정했을 때, 그것을 호출하는 방법은 다음과 같습니다.

[father setMail:newMail andName:newName];
 
메소드 이름과 셀렉터 
지금까지 메소드의 호출 방법을 몇 가지 알아보았습니다. Objective-C에서는 각 메소드는 메소드 이름과 라벨의 조합으로 식별됩니다. 정확하게는 '메소드:라벨1:라벨2:...'가 메소드 이름이 되는 셈입니다. 이것을 셀렉터(Selector) 또는 메시지 셀렉터라고 합니다. 이 때, 인수를 가지는 메소드인 경우에는 콜론 ':'도 셀렉터에 포함됩니다. 다음은 전술한 세 가지 메소드의 셀렉터를 정리한 것입니다.

:: 메소드명과 셀렉터
메소드 실행 예  셀렉터(메소드명) 
 myself = [myself name]; name 
 [father setMail:newAddress]; setMail
 [father setMail:newAddress andName:newName]; setMail:andName 
 
최초의 name 메소드와 2번째의 setMail: 메소드의 차이점에 주의하세요. 메소드명 끝에 ':'이 있는 메소드는 인수를 가집니다. 또한 ':'이 여러 개 있는 경우에는 기본적으로 그 수만큼 인수를 가집니다.

- name // 인수없음 
- setMail: //인수를 1개 가짐
- setMail:andName: //인수를 2개 가짐




   

관련글 더보기