[iOS] Objective-C Singletone Pattern
일단 Objective-C 스타일의 싱글톤 패턴 예제 코드. (definition은 생략)
하지만 애플에서는 이렇게 쓰지 말라고 하네. thread safe 하지 않다나 뭐라나.
아이폰이나 아이패드용, 즉 Cocoa 기반이라면 dispatch_once() 를 사용하랜다.
출처: http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong.html
(출처의 코드와 큰 차이는 없지만, 내가 주로 쓰는 심볼 스타일로 바꿔버렸음. -_-)
+ (MySingletone *)getInstance { static MySingletone *instance = nil; if (!instance) instance = [[MySingletone alloc] init]; return instance; }설명도 할 필요 없이 C++에서 자주 쓰이는 싱글톤의 팩토리얼 패턴이다. (싱글톤은 팩토리얼이 거의 전부라고 봐도 될 아이러니함 -ㅁ-)
하지만 애플에서는 이렇게 쓰지 말라고 하네. thread safe 하지 않다나 뭐라나.
아이폰이나 아이패드용, 즉 Cocoa 기반이라면 dispatch_once() 를 사용하랜다.
+ (MySingletone *)getInstance { static dispatch_once_t dispatchOnce; static MySingletone *instance = nil; dispatch_once(&dispatchOnce, ^{ instance = [[MySingletone alloc] init]; }); return instance; }딱 보니 최초 생성 시점(팩토리얼이 실행되었냐 여부)를 dispatch_once가 대신 파악해 주는 형식이다. 불행히도 내가 싫어하는 블럭 문법이 등장했으나 뭐 나쁘지는 않은 듯.
출처: http://cocoasamurai.blogspot.com/2011/04/singletons-your-doing-them-wrong.html
(출처의 코드와 큰 차이는 없지만, 내가 주로 쓰는 심볼 스타일로 바꿔버렸음. -_-)
댓글