메서드 정의
기본 문법
- (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