iOS 싱글톤 객체 만드는 방법

개발/iOS 2017. 12. 1. 08:00
반응형

iOS 에서 싱글톤 객체를 만들때 Thread Safe 하게 만들어야 합니다. 그래야 여러 Thread 에서 호출되더라도 동일한 객체가 생성되는 것을 보장하게 됩니다.


iOS 싱글톤 만드는 방법은 2가지가 있습니다. 각 방법의 예제를 살펴보겠습니다.


1) @synchronized 를 이용하여 생성하는 방법


1
2
3
4
5
6
7
8
9
10
+(instancetype)Instance
{
    static SampleClass *instace = nil;
    
    @synchronized(self) {
        instace = [[SampleClass allocinit];
    }
    
    return instace;
}
cs




2) GCD(Grand Central Dispatch) 를 이용하여 생성하는 방법


1
2
3
4
5
6
7
8
9
10
11
+(instancetype)Instance
{
    static SampleClass *instace = nil;
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{
        instace = [[SampleClass allocinit];
    });
    
    return instace;
}
cs



2) 번의 경우는 iOS 4.0 이상에서 사용할 수 있습니다만 현재 deployment Target 최소버전이 8.0 인걸 감안한다면 두가지 방법 중 어떤걸 사용해도 상관없습니다.

반응형
admin