티스토리 뷰

-- XCode 4.2 부터 ARC 가 추가되어 좋은건 써야 겠기에
     http://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/ 참고



.m 에서는 아래 코드와 같이(TWEngine 을 자기 클래스 이름으로 ㅇ_ㅇ.)

.h 에서는 NSCopying 프로토콜 추가 해야 될듯(선언은 +(TWEngine*)sharedTWEngine 만)

static TWEngine *sharedTWEngineManager = nil;

+(TWEngine*)sharedTWEngine {
    @synchronized(self) {
        if (sharedTWEngineManager == nil)
            sharedTWEngineManager = [[self alloc] init];
    }
    return sharedTWEngineManager;
}

+(id)allocWithZone:(NSZone *)zone {
    @synchronized(self) {
        if (sharedTWEngineManager == nil) {
            sharedTWEngineManager = [super allocWithZone:zone];
            return sharedTWEngineManager;
        }
    }
    return nil;
}

-(id)copyWithZone:(NSZone *)zone {
    return self;
}

-(id)retain {
    return self;
}

-(unsigned)retainCount {
    return UINT_MAX;  //denotes an object that cannot be released
}

-(void)release {
    //do nothing
}

-(id)autorelease {
    return self;
}

사용할땐 TWEngine *myEngine = [TWEngine sharedTWEngine];

참고 :
http://blog.hyperjeff.net/code?id=43
http://projectcocoa.com/2009/10/26/objective-c-singleton-class-template/
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함