2016-02-20 20 views
5

Lần đầu tiên tôi học cách Thực hiện Mẫu Singleton trong Swift là trong Sách này Pro Design Patterns in Swift.Singletons In Swift

Con đường tôi bắt đầu thực hiện các mẫu Singleton là trong ví dụ dưới đây:

class Singleton { 

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

    private init() { 
    } 

} 

Nhưng sau đó tôi tìm thấy thi này trong khi đọc về Cocoa Design Patterns

class Singleton { 

    static let sharedInstance = Singleton() 

    private init() { 
    } 

} 

Vì vậy, câu hỏi của tôi là, sự khác biệt là những gì giữa hai triển khai?

+6

Bạn sẽ tìm thấy tất cả trong http://stackoverflow.com/questions/24024549/using-a-dispatch-once-singleton-model-in-swift. Để làm cho nó ngắn: Việc thực hiện thứ hai là một trong những hiện đang được đề nghị. Việc thực hiện đầu tiên bắt nguồn từ Swift <= 1.1, nơi các thuộc tính lớp tĩnh chưa được hỗ trợ. –

Trả lời

4

Quay lại Swift 1 ngày, static let chưa được triển khai. Cách giải quyết là tạo một trình bao bọc struct. Với Swift 2, điều này không cần thiết nữa.

Các vấn đề liên quan