Objective-C에서의 클래스 변수 :: 2009/12/30 20:05
|
|
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
- - -
삽질의 길은 언제나 멀고도 험하다는...