Objective-C 클래스 사용하기

|

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
And