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
- - -
삽질의 길은 언제나 멀고도 험하다는...
'Languages > Objective-C' 카테고리의 다른 글
| [iphone/ipad] UIView 애니메이션 팁 (0) | 2011/01/04 |
|---|---|
| iCoffeeBreak, 두번째 iPhone App (0) | 2010/02/07 |
| Objective-C에서의 클래스 변수 (2) | 2009/12/30 |
| Ready for Sale (2) | 2009/12/24 |
| 10000 hours - 심심해서 만들어본 아이폰 앱 (8) | 2009/12/17 |
| Programming in Objective-C 2.0 (0) | 2009/12/16 |
댓글을 달아 주세요
비밀댓글입니다
2010/01/04 21:19 [ ADDR : EDIT/ DEL : REPLY ]그렇죠~
2010/01/05 10:18 [ ADDR : EDIT/ DEL ]