Swift 中何时使用静态常量和变量?

2023-12-24

有一些帖子介绍如何编写代码static constant and static variable在斯威夫特.但不清楚什么时候使用static constant and static variable而不是constant and variable。有人可以解释一下吗?


当您在类(或结构)中定义静态 var/let 时,该信息将在所有实例(或值)之间共享。

分享信息

class Animal {
    static var nums = 0

    init() {
        Animal.nums += 1
    }
}

let dog = Animal()
Animal.nums // 1
let cat = Animal()
Animal.nums // 2

正如你在这里看到的,我创建了 2 个单独的实例Animal但两者确实共享相同的静态变量nums.

辛格尔顿

通常使用静态常量来采用单例模式。在本例中,我们希望分配的类实例不超过 1 个。 为此,我们将对共享实例的引用保存在常量内,并隐藏初始值设定项。

class Singleton {
    static let sharedInstance = Singleton()

    private init() { }

    func doSomething() { }
}

现在当我们需要Singleton我们写的实例

Singleton.sharedInstance.doSomething()
Singleton.sharedInstance.doSomething()
Singleton.sharedInstance.doSomething()

这种方法确实允许我们始终使用相同的实例,即使在应用程序的不同点也是如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 中何时使用静态常量和变量? 的相关文章

随机推荐

  • ListView 和 setAdapter 的 NullPointerException

    我不断收到以下 nullPointerException 并且我无法完全弄清楚任何帮助将不胜感激 程序从数据库中查询 然后使用适配器填充ListView public class ViewListingsActivity extends A
  • 为什么 readline.read_history_file 给我“IOError:[Errno 2]没有这样的文件或目录”

    我的 Python 历史文件位于 pyhistory 并包含以下内容 from project stuff import quit from project stuff import my thing Thing objects get i
  • 使用 ref 获取 React 中的 iframe 元素

    我有一个包含 iframe 的组件 我想在 React 中访问其内容 我使用 ref 来处理 iframe 如何从 iframe 获取所有锚点标签 这是我的代码 const GridGenerator gt const loading se
  • “真”和“假”在预处理器条件中具有通常的含义吗?

    给定一个 C 11 编译器 error最终结果应该是正确的吗 no includes define SOMEMACRO true if SOMEMACRO error it was true else error it was false
  • d3.js 中的核密度平滑

    抱歉 我既不是统计专家 也不是 d3 js 专家 我试图叠加两个平滑的直方图以显示两个相关分布的重叠 我想知道 d3 js 中内核密度或其他平滑的可用性 大约一年前似乎有一些关于该主题的活动 但我无法在主线 d3 js 代码中找到该函数 关
  • 如何将 VS Code 调试器与 webpack-dev-server 结合使用(忽略断点)

    我只是想让 VS Code 的调试器与 webpack dev server 一起工作 而不忽略我的断点 现在 webpack dev server 从内存中提供捆绑文件 而如果我理解正确的话 VS Code 调试器会在磁盘上搜索它们 或者
  • 我无法让客户端脚本连接到本地主机服务器,TCP 连接永远不会发生

    我编写了一个简单的客户端程序 它使用以下命令创建套接字 CFSteamCreatePairWithSocketToHost function 并连接到在端口 8080 上的本地主机上运行的服务器 它很好地创建了套接字 但它从不连接到服务器
  • SQL Server XML 添加属性(如果不存在)

    我正在尝试添加一个属性 如果它不存在 它应该很简单 但我对 XML XPath XQuery 等还不熟悉 所以请原谅我的无知 我希望能够传递 XML 数据并修改它 ALTER FUNCTION dbo ConvertXmlData xmlD
  • Kendo UI 网格插入/更新(再次)创建重复记录

    我在这个主题中遇到了与丹尼尔相同的问题 但他的解决方案对我不起作用 http www kendoui c om forums ui grid kendo ui grid inserts updates create duplicate re
  • Gmail 中添加了一个间隙,位于 Outlook 的 html 签名内

    我创建了一个需要在 Outlook 中使用的 html 签名 根据建议 我使用了表格布局 给定所有图像 甚至 td tr 和表格本身的特定高度和宽度 0 填充和边距 甚至尝试在 css 和旧式方式中添加这些内容实际标签 在 Outlook
  • 如何使用 LibGit2Sharp 向 VSTS 进行身份验证?

    我正在尝试使用 LibGit2Sharp 克隆 VSTS Visual Studio Team Services 存储库 我正在设置一个CredentialsHandler and UsernamePasswordCredentials代表
  • Primefaces 保存/传递过滤后的数据表结果列表

    目前 我正在使用具有排序 过滤功能的数据表成功地显示数据库中的图像元数据 在我的数据表下方 我使用第三方图像封面成功地显示了我的图像 http www jacksasylum eu ContentFlow http www jacksasy
  • 引导日期选择器

    我试图让引导日期选择器突出显示在下拉日期选择器中选择的日期 它目前没有这样做 我错过了什么 div class input append date div
  • 根据控制器中的变量显示或隐藏元素 - Ionic

    据我所知 这可能更多的是 AngularJS 问题 而不是 Ionic 特定问题 我的一个视图中有一个按钮
  • 获取个人应用代码并显示

    我正在尝试获取应用程序代码并显示它 例如 如果按钮 X 启动一个新活动 则 textView 显示整个方法 我只到达了如何以 HTML 格式显示代码这个问题 https stackoverflow com questions 1529068
  • 跟踪电子中的窗口大小

    我今天才开始玩 Electron 我需要能够获取可用的窗口大小 并在窗口大小调整时更新它 看起来这并不像传统的 JS 应用程序那么简单 跟踪窗口大小的推荐方法是什么 目前 我有我的主进程和一个渲染器 不打算一次打开超过 1 个渲染器 窗口
  • 如何从命令行发送电子邮件?

    我想从命令行快速发送电子邮件 我意识到可能有多种不同的方法可以做到这一点 我正在寻找一种从 Linux 终端 可能是 bash shell 但任何东西都可以 执行此操作的简单方法 以及在 Windows 上执行此操作的替代方法 我希望能够直
  • 如何在 UML 序列图中表示监听器

    在序列图中 如何表示事件触发的侦听器 它不仅仅是常规方法调用 因此这样显示似乎不正确 我尝试制作包含 JMS 侦听器的系统的序列图 我可以通过系统对 JMS 队列的 send 调用来启动生命线 将调用 send 的系统显示为业务参与者 或者
  • Django 克隆递归对象

    以前 当我想递归地克隆对象时 我遇到了问题 我知道克隆对象的简单方法是这样的 obj Foo objects get pk
  • Swift 中何时使用静态常量和变量?

    有一些帖子介绍如何编写代码static constant and static variable在斯威夫特 但不清楚什么时候使用static constant and static variable而不是constant and varia