반응형
최초 작성일 : 2010/04/10 16:24
Objective-c에서의 메서드는 크게 클래스 메서드와 인스턴스 메서드로 나눌 수 있다.
1. Class Method
클래스 메서드는 클래스 인스턴스가 아닌 클래스에서 바로 사용 할 수 있는 메서드로
선언시에 + 기호로 시작을 한다. java 언어의 static 메서드와 유사하다.
예)
+ (void) classMethod;
클래스에서 바로 사용을 할 수 이있기 때문에 함수를 호출하는 경우에도 인스턴스명을
사용하지 않고 클래스명을 사용한다.
예)
MyClass *myClass;
...
[MyClass classMethod];
만일 자기 자신의 인스턴스를 생성하는 클래스 메서드를 subclass에서 호출한 경우
리턴되는 인스턴스는 subclass의 인스턴스이다.
예)
MyClass *myClass = [MyClass classMethod];
MySubClass *mySubClass = [MySubClass classMethod]; //MyClass의 subclass
클래스 메서드는 인스턴스 변수에 직접 접근하여 참조할 수 없다.
@interface MyClass : NSObject { |
NSString *title; |
} |
+ (void)classMethod; |
@end |
이 경우 classMethod는 title 변수를 직접 참조할 수 없다.
클래스 메서드 내에서 self를 사용하는 경우 self는 클래스 메서드가 선언된
바로 그 클래스를 의미한다.
만일 MyClass라는 클래스에 구현된 클래스 메서드 myMethod가 아래와 같다면
+ (id)myClass { |
return [[[self alloc] init] autorelease]; |
} |
이 메서드 내에서의 self는 MyClass 클래스이다.
만일 MyClass의 서브 클래스인 MySubClass의 인스턴스를 얻고자 한다면
아래와 같이 호출해야 한다.
[MySubClass myClass];
2. instance Method
인스턴스 메서드는 - 기호로 메서드를 선언한다.
인스턴스 메서드는 클래스의 인스턴스가 생성된 후 사용할 수 있는 메서드로
클래스의 인스턴스와 생명주기를 같이 하여 인스턴스가 메모리에서 해제되면
더이상 사용을 할 수없는 메서드이다.
메서드 호출 역시 클래스 이름이 아닌 인스턴스 이름을 통하여 하게 된다.
만일 MyClass 클래스에 다음과 같이 인스턴스 메서드가 선언되어있다면
- (void) myInstanceMethod;
이 메서드는 다음과 같은 절차를 거쳐 호출될 수 있다.
MyClass *myClass = [MyClass myClass];
[myClass myInstanceMethod];
반응형
'Development > iPhone' 카테고리의 다른 글
[옛 글] [Methods] SimpleSectionedTableView - 모델 클래스에 사용된 메서드 정리 (0) | 2013.07.12 |
---|---|
[옛 글] [APIs] NSSortDescriptor (0) | 2013.07.12 |
[옛 글] SimpleSectionedTableView - Region, TimeZoneWrapper (0) | 2013.07.12 |
[옛 글] SimpleSectionedTableView - 소스 목록 (0) | 2013.07.12 |
[옛 글] SimpleSectionedTableView - 스크린 샷 (0) | 2013.07.12 |