본문 바로가기
프로그래밍/iOS

싱글톤에 관련한 간단한 팁

by 백룡화검 2011. 10. 25.


싱글톤패턴 공부하면서알게됐는데

+ (id) sharedInstance {
    static Singleton * instance;
    @synchronized(self) {
        if (instance==nil) {
            instance = [[self alloc] init];
        }  
    }
    return instance;
}


+ (id) sharedInstance {
    static Singleton * instance;
    if (instance==nil) {
        @synchronized(self) {
            if (instance==nil) {
                instance = [[self alloc] init];
            }  
        }   
    }
    return instance;
}

@synchronized 를 쓰는 이유가 멀티스레드에서 안정성을 보장받기위해서 쓰는데요 if(instance==nil)에서 스레드 두개가 동시에 호출할 경우에 문제가 생길수가 있으니 락을 걸어주긴 해야되는데 계속 동기화를 저런식으로 하면 속도문제가 조금이나마 발생할수 있겠죠..

그래서 수정된 두번째것이 DCL(Double Checked Locking)기법으로 쓰는거라네요 자주 호출한다면 아래가 더 좋겠죵 ><

첨부파일은 싱글톤 관련 매크로와 사용법 그리고 문씨님보고 퍼왔던 UIImage관련 사용법입니다.. 자료출처는 아래인데 공부에 도움이 많이됐습니당 한번 보고오시면 좋을듯싶네요 ㅎ

http://cocoawithlove.com/2008/11/singletons-appdelegates-and-top-level.html
http://lab.smoon.kr/71

참고
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html

그럼 파이팅입니다용

출처 : http://cafe.naver.com/mcbugi/157260