본문 바로가기

아이폰/개발일지

[Objective-C] 메소드 기초

반응형

 

안녕하세요. 오늘 포스팅은 메소드 기초입니다.

메소드는 클래스의 속성중 일부로 특정 기능을 수행하는 단위로 소스에 같은 코드가 반복되고 있다면 메소드화 시켜 코드를 줄일 수 있습니다.  메소드를 적절히 사용한다면 다른 사람이 보기에도 그렇지 않은 코드보다 더 빠르게 이해할 수 있습니다.


메소드는 클래스와 동일하게 정의와 구현을 따로 나누어 사용합니다.





메소드 정의

파라미터가 없는 기본적인형태에 메소드 정의 방식입니다.

(인스턴스 여부) ( 반환 자료형 ) 메소드명


-(void)reset;


  • 메소드 맨 앞에는 '+' 혹은 '-' 가 붙는데 이를 통해 메소드가 클래스 메소드인지 인스턴스 메소드인지 알 수 있습니다. '+' 가 클래스 메소드'-'인스턴스 메소드로서 필요에 따라 사용하시면 됩니다.
  • 반환 자료형은 메소드 반환 타입을 설정하면 됩니다.  그에 따라 메소드의 결과값을 자료형과 일치하는 변수에 담을 수도 있습니다.
  • 메소드명은 말 그래도 메소드의 이름으로 메소드가 수행하는 작업의 성질을 나타내주면 가독성을 높힐 수 있습니다.


메소드 구현

메소드의 실질적 기능을 추가합니다.


-(void)reset{

     ....메소드 내용

}





다중 파라미터

메소드를 사용할때 특정 값을 입력해서 그에 따라 결과값이 달리지도록 할 수 있습니다.


(인스턴스 여부) ( 반환 자료형 ) 메소드명 : (파라미터1 타입파라미터1 이름 파라미터2 (파라미터2 타입파라미터2 이름 파라미터3 (파라미터3 타입파라미터3 이름 


다중 파라미터간 구분이 다른 언어에 비해 어렵습니다. 그래서 메소드명 자체를 파라미터1로 인지하고 사용하시는 글들을 몇개 본적이 있는데 생각에 따라 조금씩 다르겠지만, 저 또한 메소드명을 파라미터1로 생각하고 사용하는게 이해에 도움이 된다고 생각합니다.


예시 
다음과 같이 세개의 파라미터를 사용하는 변수를 정의합니다.

 

-(void) sum:(int)num1 second:(int)num2 third:(int)num3;



입력받은 파라미터를 모두 더해서 출력하는 기능을 구현합니다.

 

-(void)sum:(int)num1 second:(int)num2 third:(int)num3{

    

    int result;

    

    result=num1+num2+num3;

    

    NSLog(@"result=%d",result);

}



다음과 같이 사용합니다. 

 

[self sum:1 second:2 third:3];


결과값


여기서 메소드를 사용할때 붙인 self는 자바의 this와 같은 개념입니다.


이상으로 메소드 기초 포스팅을 마칩니다.




해당 포스팅은 지극히 주관적인 내용으로 저자의 복기 목적으로 작성된 것이고, 내용에대해 수정이나 추가 요청은 언제든 환영합니다. 






반응형