Являются ли эти два подхода одинаковыми или существуют существенные различия/ловушки, о которых следует знать:
class MyClassSingleton {
  static let sharedInstance = MyClassSingleton()
  private init(){}
  func helloClass() { print("hello from class Singleton") }
}
struct MyStructSingleton {
  static let sharedInstance = MyStructSingleton()
  private init() {}
  func helloStruct() { print("hello from struct Singleton") }
}