iOS 개발/Swift
[Swift] Singleton Pattern 구현하기
beankhan
2017. 6. 6. 00:12
출처
http://seorenn.blogspot.kr/2015/01/swift-singleton-pattern.html
Objective-C 에서는?
Objective C 에서 사용했던 방법은
dispatch_once 를 이용한 방법이었다.
+ (nullable instancetype)sharedInstance {
static dispatch_once_t onceToken;
static BusinessManager *instance = nil;
dispatch_once(&onceToken, ^{
instance = [[BusinessManager alloc] initPrivate];
});
return instance;
}
Swift 에서는?
Swift 에서는 더욱더 간단하게 구현이 가능하다.
Swift 에서 let 으로 선언된 변수는 상수이기 때문에 thread-safe 가 기본적으로 보장된다.
Swift 의 전역변수는 lazy 하게 처리된다.
class BusinessManager {
static let sharedInstance = BusinessManager()
}
Initialize 단계에서 추가적인 작업이 필요하다면, 아래와 같이한다.
class BusinessManager {
static let sharedInstance : BusinessManager = {
let instance = BusinessManager()
//setup code
return instance
}()
}