You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中属性声明时使用`set`关键字的作用是什么?

Swift 中 private(set) 修饰静态变量的作用

这行代码是 Swift 里实现单例的常用写法,核心是通过 private(set) 精准控制属性的读写权限:

  • static:让 shared 成为类的静态属性,属于类本身而非类的实例,整个程序运行期间只会存在这一个实例。
  • private(set):拆分读写权限的关键:
    • 类外部的代码仅能读取shared的值,无法直接修改(比如不能执行 UserPreferences.shared = UserPreferences() 这类赋值操作),保证了单例实例的唯一性不被外部破坏。
    • 类内部的代码可以修改shared的值,比如类里的重置方法可以重新赋值,给类自身留了调整实例的灵活度。

对比两种极端情况就能明白它的必要性:

  • 若只写 static var shared:外部既能读也能随意修改,单例的唯一性毫无保障。
  • 若写 static private var shared:外部连读取权限都没有,完全没法使用这个单例实例。

private(set) 本质是一种「只读对外,可写对内」的权限控制方案,完美适配单例这种需要外部访问但不能随意篡改的场景。

内容的提问来源于stack exchange,提问作者hsiraaH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:45:36