C++의 클래스 구현과 마찬가지로, 선언부와 구현부로 나뉘어진다.
대략적인 형태는 아래와 같다.
@interface MyClass : NSObject { int myVal; } - (void) myFunction; - (void) myFunctionWithArgs:(int)number1 arg2:(int)number2; @end @implementation MyClass : NSObject - (void) myFunction { NSLog(@"myFunction called"); } - (void) myFunctionWithArgs:(int)number1 arg2:(int)number2 { NSLog(@"myFunctionWithArgs called with %d, %d", number1, number2); } @end
선언부는 @interface로 시작하여 @end로 끝나며, 구현부는 @implementation으로 시작하여 @end로 끝난다.
보통 C에서 하듯이 선언부는 .h파일로, 구현부는 .m 파일로 만들어 분리한다.
@interface MyClass : NSObject
NSObject를 상속받는 MyClass를 선언하고, 이 클래스는 myVal이라는 속성을 가진다.
함수 선언이 C나 Java등의 언어에서 보던것과는 좀 다른데, Objective-C는 중위 표현식(infix)을 사용한다.
-(void)myFunction; 은 C등에서의 void myFunction() 과 같으며,
-(void)myFunctionWithArgs:(int)number1 (int)number2는 void myFunctionWithArgs(int number1, int number2) 와 같다.
함수 선언 앞의 - 표시는 일반적인 인스턴스 생성 후 사용할 수 있는 함수이며, - 대신 + 를 쓰게 되면 인스턴스 생성 없이 사용할 수 있는 (static) 함수라는 뜻이다.
Objective-C는 실제적으로 private 메소드가 없다. 보통 private메소드는 선언부에 선언을 하지 않은채로 사용하지만,
선언부에 없다고 해서 실제적으로 외부에서 사용할 수 없는것은 아니다. 선언부에 없는 메소드도 실제 구현부에 있다면 얼마든지 사용이 가능하다.
이 클래스를 외부에서 사용하려면 다음과 같이 사용한다.
MyClass *myClass = [MyClass new]; [myClass myFunction]; [myClass myFunctionWithArgs:10 arg2:20];
[myClass myFunction] 은 myClass인스턴스로 myFunction이라는것을 수행해라 라고 명령을 보내는것과 같다.
'Knowledge > Objective-C&XCode' 카테고리의 다른 글
Objective-C 시작하기 (0) | 2013.06.07 |
---|