本文介绍了为什么建议的Swift单例实现使用结构体?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

常用的Singleton模式在类变量/ type属性中使用了一个Struct。

The commonly accepted Singleton pattern for Swift uses a Struct inside a class variable/type property.

而不是:

class MySingleton {
  class var sharedInstance: MySingleton {
    struct Singleton {
      static let instance = MySingleton()
    }
    return Singleton.instance
  }
}
class MySingleton {
  class var sharedInstance: MySingleton {
      let instance = MySingleton()
      return instance
  }
}

如果这是一个非常愚蠢的问题,但是不要同时利用常量的线程安全性和 let

Apologies if this is a very stupid question. But don't both leverage the thread-safety of constants and let?

推荐答案

与你的实现,'sharedInstance'不是一个singleton原因每次被调用,它创建了MySingleton的新实例。而且,要创建一个静态变量,你必须把它放在结构枚举中,否则会得到编译器错误

with your implementation, the 'sharedInstance' is not a singleton cause each time it gets called, it creates new instance of MySingleton. And, to create a static variable, you have to put it in struct o enums, otherwise, you will get compiler error

这篇关于为什么建议的Swift单例实现使用结构体?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 07:26