study - iOS
[ios] ios에서 singleton 생성하기
ODING2
2019. 4. 21. 23:07
ingleton 객체 생성 할 때, 어플리케이션 life cycle동안 한 번만 불릴 수 있도록 조절한다
아래와 같이 thread-safe를 위해 dispatch_once() 를 사용하자.
[OBJECTIVE - C]
static Manager *_sharedManagerInstance = nil;
+ (void) close
{
_sharedManagerInstance = nil;
}
+ (Manager *)sharedManager
{
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
_sharedManagerInstance = [[self alloc] init];
});
return _sharedManagerInstance;
}
[SWIFT]
class Singleton {
class var sharedManager: Singleton {
struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: Singleton? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = Singleton()
}
return Static.instance!
}
}
사실 swift 에서는 그냥
class Singleton {
static let sharedManager = Singleton()
}
let 정의가 thread safety 하기때문에 이렇게만 해줘도 된다,,