You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
session-ios/SignalMessaging/utils/SwiftSingletons.swift

36 lines
1013 B
Swift

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