小编Sta*_*ots的帖子

如何防止Swift中的对象构造

您知道使用Swift编程语言阻止对象构建的方法有哪些?

在C++中,我可以简单地将构造函数设为私有,如下所示:

struct A {
 private:
  A() {};
};

int main()
{
  // Doesn't compile because the constructor is private.
  A obj;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我在Swift中做类似的事情(我在游乐场尝试过)时,代码编译得很好:

class A {
  private init() {}
}

let obj = A()
Run Code Online (Sandbox Code Playgroud)

更新:

好的,这个问题被标记为重复.但我认为这是一种误解.我要问的是,你知道什么是防止Swift中的对象构建的最佳实践.我想要达到的目的是让我的班级用户明白它不应该是可构造的.

更新2:

由于这个问题仍然存在,我认为,对于那些仍然无法理解我真正想要的人,需要更多的澄清.

给定一个类作为一些有用常量的包装器,如下所示:

class Constants {
 static let someConstant1 = "CONSTANT_VALUE1"
 static let someConstant2 = "CONSTANT_VALUE2"
 //....etc...
}
Run Code Online (Sandbox Code Playgroud)

什么选项可以被视为最佳实践:

  • 保持原样,不要担心在这个课程之外创建对象的可能性;
  • 添加private init() {}以防止在当前文件之外创建对象;
  • 使用init?和返回nil表示不能按照注释中的建议创建对象.

希望现在的问题更清楚了.

ios swift

6
推荐指数
1
解决办法
3565
查看次数

标签 统计

ios ×1

swift ×1