session-ios/SignalServiceKit/src/Util/SwiftSingletons.swift

36 lines
958 B
Swift
Raw Normal View History

2017-12-07 16:35:47 +01:00
//
2018-08-23 16:37:34 +02:00
// Copyright (c) 2018 Open Whisper Systems. All rights reserved.
2017-12-07 16:35:47 +01:00
//
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) {
2017-12-07 20:44:38 +01:00
guard !CurrentAppContext().isRunningTests else {
return
}
2017-12-07 16:35:47 +01:00
guard _isDebugAssertConfiguration() else {
return
}
2018-08-23 16:37:34 +02:00
let singletonClassName = String(describing: type(of: singleton))
2017-12-07 16:35:47 +01:00
guard !classSet.contains(singletonClassName) else {
2018-08-27 16:27:48 +02:00
owsFailDebug("Duplicate singleton: \(singletonClassName).")
2017-12-07 16:35:47 +01:00
return
}
2018-08-23 16:37:34 +02:00
Logger.verbose("Registering singleton: \(singletonClassName).")
2017-12-07 16:35:47 +01:00
classSet.insert(singletonClassName)
}
public static func register(_ singleton: AnyObject) {
shared.register(singleton)
}
}