티스토리 뷰

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/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
글 보관함