Swift: class 和属性 - 都只初始化一次

Swift: class and properties - all only initialized once

我正在寻找具有属性的 class 或结构(无关紧要),其中所有内容只能在应用程序中初始化一次。任何修改 class 或其属性的尝试都将失败或不可能。

这可能吗?

到目前为止我已经想到了这个:

public struct ScreenInfo
{
    static var scaleFactor:Int = 0

    public init(initialScaleFactor:Int)
    {
        if (ScreenInfo.scaleFactor == 0) {
            ScreenInfo.scaleFactor = initialScaleFactor
        }
    }

    public static func getScaleFactor()
    -> Int
    {
        return scaleFactor
    }
}

let si1:ScreenInfo = ScreenInfo(initialScaleFactor:11)
ScreenInfo.getScaleFactor()    // = 11

let si2:ScreenInfo = ScreenInfo(initialScaleFactor:22)
ScreenInfo.getScaleFactor()    // = 11

你想要的有点不寻常,但它是可能的。

public struct ScreenInfo {
  private static var _scaleFactor: Int?
  public static var scaleFactor: Int? {
    set {
      if _scaleFactor == nil {
        _scaleFactor = newValue
      } else {
        // Optionally throw an exception or something
      }
    }
    get {
      return _scaleFactor
    }
  }
}

ScreenInfo.scaleFactor       // nil
ScreenInfo.scaleFactor = 5
ScreenInfo.scaleFactor       // 5
ScreenInfo.scaleFactor = 15
ScreenInfo.scaleFactor       // 5