Programming/iPhone

Objective-C에서 Singleton객체 만들기

통통만두 2010. 6. 30. 15:42
반응형

Objective-C에서 Singleton 객체를 만드는방법은 다음과 같습니다.

//  SingletonClass.h

#import! <Foundation/Foundation.h>

@interface SingletonClass : NSObject
{
}

+ (SingletonClass *)sharedSingletonClass;

@end



//  SingletonClass.m

#import! "SingletonClass.h"

@implementation SingletonClass

+ (SingletonClass *)sharedSingletonClass
{
    static SingletonClass *singletonClass = nil;
    
    if(singletonClass == nil)
    {
        @synchronized(self)
        {
            if(singletonClass == nil)
            {
                singletonClass = [[self alloc] init];
            }
        }
    }
        
    return singletonClass;
}

@end



여기선 DCL(double-checked locking)을 사용하였는데, Objective-C에서도 최적화 과정에서 비교 구문의 instruction의 위치가 바뀐다면.. 엄밀히 말하면 100% 안전한 코드는 아니되겠습니다.


사용 방법은

SingletonClass *s = [SingletonClass sharedSingletonClass];



와 같이 하시면 됩니다.


 

출처 : http://b4you.net/blog/210


반응형