2014-09-14 1 views
0

는 오브젝티브 C 클래스의 공유 인스턴스를 제공하는 표준 방법은 다음과 같습니다 초기화가 실패하고 nil을 반환dispatch_once로 둘러싸인 초기화에 실패하면 어떻게해야합니까?

+ (instancetype)sharedInstance { 
    static MyClass shared; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     shared = [MyClass new]; 
    }); 
    return shared; 
} 

하지만 경우에? 영원히 nil일까요? 어딘가에서 nil 테스트를 실시해서는 안되며, 필요하다면 onceToken (어떻게 든)을 다시 설정해야합니까?

답변

3

onceToken 재설정은 선택할 수 없습니다. 블록은 반환 할 때까지 초기화가 성공했는지 확인하는 데 필요한 모든 단계를 수행해야합니다.

0

싱글 톤을 만듭니다. 싱글 톤을 만들 수 없다면 심각한 문제가 발생할 수 있습니다. 가상의 문제 일 경우 무시하십시오. alloc/init이 nil을 반환 할 수 있고 nil을 반환하면 반지에 수건을 던지거나 앱에 자체를 죽이라는 것을 제외하고는 무엇을 할 수 있습니까? 나중에 성공할 것이라고 생각하는 이유는 무엇입니까?