싱글톤패턴 공부하면서알게됐는데
+ (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
'프로그래밍 > iOS' 카테고리의 다른 글
컨텐츠의 사이즈에 맞추어 UILabel 크기 변경하기 (0) | 2011.11.02 |
---|---|
UIWebView 내의 컨텐츠 이벤트 가로채기 (0) | 2011.10.27 |
프로젝트에 프로젝트 삽입 (0) | 2011.10.25 |
UiimageView에 이미지를 적용시 이미지 공백으로 나타날 경우 (0) | 2011.10.11 |
아이폰에서의 문자열 지역화(Localization) (0) | 2011.10.11 |