[Objective-C] 메서드 정의하기

리앤·2022년 10월 10일
0

메서드 정의

기본 문법

- (return_type) method_name:( argumentType1 )argumentName1 
joiningArgument2:( argumentType2 )argumentName2 ... 
joiningArgumentn:( argumentTypen )argumentNamen {
   /* body of the function */
}

 

예시: 두 개의 매개변수로 받아서 둘 중 가장 큰 값을 반환하는 함수

- (int) max:(int) num1 secondNumber:(int) num2 {
   
   /* 지역변수 선언 */
   int result;
 
   if (num1 > num2) {
      result = num1;
   } else {
      result = num2;
   }
 
   return result; 
}
  • 기본적으로 Objective-C에선 함수를 메서드라 칭한다
  • 함수 선언할 때 앞에 -, +를 붙이는데 -는 일반 함수(Objective-C 메서드)를, +는 클래스를 의미한다

 

max() 메서드의 선언부

-(int) max:(int)num1 andNum2:(int)num2;
  • 메서드 선언부는 컴파일러에게 함수 이름과 메서드를 호출하는 방법을 알려준다
  • 선언만 하고 함수의 본문은 별도로 정의 가능
  • 메서드를 한 소스 파일에서 정의하고 별도의 소스 파일에서 해당 메서드를 호출할 때 메서드 선언이 필요하다 / 메서드가 호출되는 파일의 최상단에 이 선언부가 들어가줘야 한다
    • 일반적으로 Objective-C의 implementation 부분은 .m 확장자 파일에, inferface 부분은 .h 확장자 파일에 별도로 저장되기 때문
    • @interface엔 메서드 선언이, @implementation엔 메서드 구현부가 들어간다

 

Swift vs. Objective-C 문법 비교

Swift의 함수 정의

func myMethod(name: String, age: Int) -> Void {
 	// 함수 내용
}

myInstance.myMethod(name: "ned", age: 13)

Objective-C의 함수 정의

/* 함수 선언 */ 
- (void)myMethodWithName:(NSString *)name age:(int)age {
	/* 함수 내용 (name, age 활용) */
 } 

/* 인스턴스 생성, 메서드 호출 */ 
[myInstance myMethodWithName:@"ned", age: 13]

 


Reference1

profile
iOS 뉴비의 성장 기록

0개의 댓글