티스토리 뷰
ingleton 객체 생성 할 때, 어플리케이션 life cycle동안 한 번만 불릴 수 있도록 조절한다
아래와 같이 thread-safe를 위해 dispatch_once() 를 사용하자.
[OBJECTIVE - C]
static Manager *_sharedManagerInstance = nil;
+ (void) close
{
_sharedManagerInstance = nil;
}
+ (Manager *)sharedManager
{
static dispatch_once_t predicate;
dispatch_once(&predicate, ^{
_sharedManagerInstance = [[self alloc] init];
});
return _sharedManagerInstance;
}
[SWIFT]
class Singleton {
class var sharedManager: Singleton {
struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: Singleton? = nil
}
dispatch_once(&Static.onceToken) {
Static.instance = Singleton()
}
return Static.instance!
}
}
사실 swift 에서는 그냥
class Singleton {
static let sharedManager = Singleton()
}
let 정의가 thread safety 하기때문에 이렇게만 해줘도 된다,,
'study - iOS' 카테고리의 다른 글
| [ resignFirstResponder]에 관련하여 (0) | 2019.04.21 |
|---|---|
| ios 8.0 이상 처리해야할 것들 (0) | 2019.04.21 |
| [ios] Device UUID / UDID 가져오기 + ADID (0) | 2019.04.21 |
| [공유] [iOS] Dropbox를 이용한 Enterprise(In-House) App 배포하기 (0) | 2019.04.21 |
| iOS11 UIPageViewController error 해결 (0) | 2019.04.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 반응형프로그래밍
- UDID
- iOS #앱개발
- CarPlay
- ADID
- iBeacon
- SVG
- 세계시간
- IDFA
- ios #DRM #Media #codec #swift #audio #fairplay #widevine #playready
- RxSwift
- 비콘
- DeviceID
- Swift
- 앱개발
- Singleton
- Instance
- UIPageViewController
- TimeZone
- uuid
- iOS비콘
- backgroundTask
- 카플레이
- RECO
- ios
- Beacon
- GAID
- xcode
- 파일변환
- 백그라운드
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
글 보관함