// // Copyright (c) 2018 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 { owsFailDebug("Duplicate singleton: \(singletonClassName).") return } Logger.verbose("Registering singleton: \(singletonClassName).") classSet.insert(singletonClassName) } public static func register(_ singleton: AnyObject) { shared.register(singleton) } }