2016-10-25 2 views
0

작동하지 않습니다하지만 스위프트 3에서 오류가 발생합니다 ...싱글 구현은 더 이상 스위프트 3이 스위프트 2 일

class SomeClass { 

     var Role: Int 
     var Status: Bool 

     static let sharedClass = SomeClass() 

     private init(){ 
      Role = 3 
      Status = false 
     } 
    } 

    let shared = SomeClass() //error on this line -> SomeClass initializer is inaccesible due to private protection level 

내가 init()에서 private 키워드를 제거 할 수 있지만 확실하지 않다 그것이 여전히 적절한 싱글 톤 구현 인 경우. 스위프트 3에서이 일을하는 올바른 방법이 누구인지 압니까? 감사합니다

답변

1

이 줄 :

let shared = SomeClass() 

는 싱글 톤을 사용하지 않습니다. SomeClass의 새 인스턴스를 만들려고합니다. init은 비공개이므로 실패합니다.

당신이 원하는 :

let shared = SomeClass.sharedClass 

싱글 톤을 사용한다 그. 당신의 싱글이

SomeClass.sharedClass 

을 통해서만 액세스 할 수 있으며,이 목적에 :

1

는 당신이 전혀 SomeClass()를 사용하는 안, 즉 전체 포인트 년대 같은 인스턴스 공유 및 다른 장소에서 사용 .