// 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];
와 같이 하시면 됩니다.
Posted by 장현준


