Objective-C에서의 클래스 변수 :: 2009/12/30 20:05



Objective-C에서는 클래스 변수의 개념을 명시적으로 지원하지 않습니다. Java 같으면 다음과 같이 할 수 있었겠죠.

public class MyClass {
  static int INSTANCE_COUNT = 0;
  //...
}

하지만 Objective-C에서는 그렇게 할 수 없기 때문에, static 변수를 사용한 편법을 써야 합니다. C/C++에서 static 키워드는 다음과 같은 효과를 갖습니다.

1. 함수 안에서 static으로 선언된 변수의 lifetime은 그 함수가 최초로 사용된 시점부터 프로그램이 종료될 때 까지로 연장된다.

2. 함수 외부에서 static으로 선언된 변수의 scope는 그 변수가 사용된 파일 내부로 한정된다.

따라서 2번 규칙을 사용하면 비슷한 효과를 얻을 수 있습니다.

다음 예제를 한번 보시죠.

// MyClass.h

@interface MyClass : NSObject {
}

+ (MyClass*) myClassFactory;

+ (int) count;

- (id) init;

@end

// MyClass.m

@implementation MyClass

static int INSTANCE_COUNT = 0;

+ (MyClass*) myClassFactory {
  ++INSTANCE_COUNT;
  return [[[MyClass alloc] init] autorelease];
}

+ (int) count {
  return INSTANCE_COUNT;
}

- (id) init {
  if ( self = [super init] ) {
    // ...
  }
  return self;
}

@end

- - -

삽질의 길은 언제나 멀고도 험하다는...
크리에이티브 커먼즈 라이선스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이선스에 따라 이용하실 수 있습니다.
미투데이로 한마디트위터로 한마디
트랙백 주소 :: http://www.buggymind.com/trackback/261 관련글 쓰기
성함
비밀번호
홈페이지 비밀글로
< PREV |  1  |  ...  3  |  4  |  5  |  6  |  7  |  8  |  9  |  10  |  11  |  ...  225  |  NEXT >