티스토리 뷰

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 하기때문에 이렇게만 해줘도 된다,,

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
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
글 보관함