当前位置: 首页 > 知识库问答 >
问题:

Swift 3.0静态实例,从迁移工具更改语法[duplicate]

阚英武
2023-03-14

在一个类中,我以前会像这样创建一个共享实例:

class MenuConfigurator
{
  // MARK: Object lifecycle

  class var sharedInstance: MenuConfigurator
  {
    struct Static {
      static var instance: MenuConfigurator?
      static var token: dispatch_once_t = 0
    }

    dispatch_once(&Static.token) {
      Static.instance = MenuConfigurator()
    }

    return Static.instance!
  }

}

Swift 3.0迁移工具似乎已将代码块更改为:

class MenuConfigurator
{
  private static var __once: () = {
      Static.instance = MenuConfigurator()
    }()
  // MARK: Object lifecycle

  class var sharedInstance: MenuConfigurator
  {
    struct Static {
      static var instance: MenuConfigurator?
      static var token: Int = 0
    }

    _ = MenuConfigurator.__once

    return Static.instance!
  }

}

我得到错误使用未解析的标识符静态。这里发生了什么?为什么创建了新的var私有静态var__once

共有1个答案

李昊苍
2023-03-14

Swift 3中删除了一次调度。

创建单例的推荐方法(至少自Swift 2以来)很简单

class MenuConfigurator
{
  static let sharedInstance = MenuConfigurator()
}

let configurator = MenuConfigurator.sharedInstance

忘记移民的建议吧。

 类似资料:
  • 假设我有以下简单语法(查询DSL): 然后在某个时刻,我决定需要更改文本术语格式,例如: 我应该如何迁移用户使用以前版本的语法生成的现有数据?

  • SQLAlchemy变更日志和迁移指南现在集成在主文档中。 当前迁移指南 SQLAlchemy 1.4有什么新功能? SQLAlchemy 2.0概述和状态 迁移到Alchemy 更改日志 1.4变更日志 1.3换热器 1.2换热器 1.1换热器 1换热器 0.9换热器 0.8换热器 0.7换热器 0.6换热器 0.5换热器 0.4换热器 0.3换热器 0.2换热器 0.1换热器 旧的迁移指南 S

  • 我有一个私有int数组,我需要以某种方式找到长度,但在静态类下无法做到这一点。我必须保持类的静态,是否可以添加其他方法来将a.length更改为其他方法? 该问题是由a.length引起的。

  • 名称: aof_to_pika 位置: pika bin目录下 目的: 方便Redis数据到Pika的迁移 背景: Pika兼容Redis协议,所以任何使用于Redis的迁移工具同样也适用于Pika,Redis-cli本身提供了一个pipe参数来完成Redis到Redis的数据迁移。该工具的实现方式为读取待迁移Redis的aof文件并批量发送到目的Redis。Berry借鉴这种方式,并增加了如下改

  • 数据库迁移工具 首先通过 composer 安装 composer require topthink/think-migration 注意事项,不支持修改文件配置目录 在命令行下运行查看帮助,可以看到新增的命令 php think migrate migrate:create Create a new migration migrate:rollback Rollback t

  • 问题内容: 我熟悉静态工厂方法的概念和好处,如Joshua Bloch的EffectiveJava中所述: 工厂方法具有名称,因此与构造函数不同,您可以拥有多个具有相同签名的工厂方法。 工厂方法不必创建新的对象。他们可以返回先前创建的对象。这对于不可变对象或值对象很有用。 与构造方法不同,工厂方法可以返回其返回类型的任何子类型的对象。 现在,我正在尝试为正在学习Java和OO原理的人员解释静态工厂