+ (id) sharedInstance {
static Singleton * instance;
@synchronized(self) {
if (instance==nil) {
instance = [[self alloc] init];
}
}
return instance;
}
@synchronized를 쓰는 이유가 멀티스레드에서 안정성을 보장받기위해서 쓰는지는 다들 알텐데 이게 좀 느릴수가잇음
if(instance==nil)에서 스레드 두개가 동시에 호출할 경우에 문제가 생길수가 있으니 락을 걸어주긴 해야되는데 그래서 고안한게
+ (id) sharedInstance {
static Singleton * instance;
if (instance==nil) {
@synchronized(self) {
if (instance==nil) {
instance = [[self alloc] init];
}
}
}
return instance;
}
이걸 DCL(Double Checked Locking)이라고 하는데 이게 앞에꺼보다 더 빠름.
싱글톤 암만 욕해도 쓸수밖에 없을때가 잇음
올