티스토리 뷰

출처

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

    }()

}












공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함