Swift 单例传值

回顾 Objc 创建单例的方式:

    @interface Kraken : NSObject
    @end

    @implementation Kraken

   + (instancetype)sharedInstance {
static Kraken *sharedInstance = nil;
static dispatch_once_t onceToken;
 
dispatch_once(&onceToken, ^{
    sharedInstance = [[Kraken alloc] init];
});
return sharedInstance;
  }

  @end

1.创建单例

  class TheOneAndOnlyKraken {
      // 单例传送的值
  var userName:String?
     //    定义类方法   +
  static let sharedInstance = TheOneAndOnlyKraken()

/// 设置 init 方法私有。防止调用init 方法 破坏类的单一性
  private init() {} //This prevents others from using the default '()' initializer for this class.
 }

2.给单例的属性赋值

   let the = TheOneAndOnlyKraken.sharedInstance

   the.userName = "xxx"

3.输出单例的属性值

     let the = TheOneAndOnlyKraken.sharedInstance
     print(the.userName ?? "default value")
    单例是全局唯一的。只初始化一次。且必须保证线程安全。所以单例类的初始化方法必须是私有的。这样就可以避免其他对象通过单例类创建额外的实例
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容