2016-02-20 3 views
5

Впервые я узнал, как реализовать шаблон Singleton в Swift в этой книге Pro Design Patterns in Swift.Singletons In Swift

Так я приступил к реализации Singleton Pattern в примере ниже:

class Singleton { 

    class var sharedInstance: Singleton { 
     struct Wrapper { 
      static let singleton = Singleton() 
     } 
     return Wrapper.singleton 
    } 

    private init() { 
    } 

} 

Но потом я нашел эту реализацию, читая о Cocoa Design Patterns

class Singleton { 

    static let sharedInstance = Singleton() 

    private init() { 
    } 

} 

Так что мой вопрос, в чем разница между двумя реализациями?

+6

Вы найдете все это в http://stackoverflow.com/questions/24024549/using-a-dispatch-once-singleton-model-in-swift. Чтобы сделать его коротким: вторая реализация является рекомендуемой в настоящее время. Первая реализация связана с Swift <= 1.1, где свойства статического класса еще не поддерживались. –

ответ

4

Назад в Свифт 1 дней, static let еще не был реализован. Обходной путь состоял в создании обертки struct. С Swift 2, это больше не нужно.