// // Copyright (c) 2017 Open Whisper Systems. All rights reserved. // import Foundation public class SwiftSingletons: NSObject { public static let shared = SwiftSingletons() private var classSet = Set() private override init() { super.init() } public func register(_ singleton: AnyObject) { guard !CurrentAppContext().isRunningTests else { return } guard _isDebugAssertConfiguration() else { return } let singletonClassName = String(describing:type(of:singleton)) guard !classSet.contains(singletonClassName) else { owsFail("\(self.logTag) in \(#function) Duplicate singleton: \(singletonClassName).") return } Logger.verbose("\(self.logTag) in \(#function) Registering singleton: \(singletonClassName).") classSet.insert(singletonClassName) } public static func register(_ singleton: AnyObject) { shared.register(singleton) } }