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

    }()

}