在 swift 中如何理解设置为 private 的全局变量?

2023-12-29

我正在完成一本书中的核心数据练习,它首先创建一个单例的帮助器类。我知道全局变量可以在类的范围之外创建,并且可以在整个项目中访问,但是令我困惑的是,书中的一个示例创建了一个全局变量并将其设置为私有。我假设通过将变量设置为私有,它只能由该特定类访问。这个私有全局变量是在辅助类之外创建的,因此我假设项目中的所有类都可以访问它,因此不需要 private 关键字。任何人都可以帮助确认我的假设是正确还是不正确,因为我真的很想理解。

这是本书示例中的代码:

import Foundation

import CoreData


//this is a global variable accessible from any module or class
private let _sharedCDHelper = CDHelper()

class CDHelper: NSObject {

    // MARK: - SHARED INSTANCE
    class var shared: CDHelper {
        return _sharedCDHelper
    }
}

Swift 中的私有全局变量是一个全局变量,只能从声明它的文件中访问。

您使用的这本书没有遵循当前在 Swift 中创建单例的最佳实践(也许它有点过时了?)。

不需要私有全局变量。你可以直接说:

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

在 swift 中如何理解设置为 private 的全局变量? 的相关文章

随机推荐

  • Rails 开发人员如何与 Flex 前端对话?

    我将 Rails 开发视为 Flex 应用程序的后端 并试图找出 Rails 应用程序和 Flash Player 之间的通信层 我发现的所有内容都表明使用 SOAP Web 服务进行通信 然而 Flash 支持 AMF 它很好且快速 并且
  • 在 AFNETWORKING 中返回响应

    我正在关注this http www raywenderlich com 30445 afnetworking crash course在 IOS 中学习 AfNetworking 的教程 我正在使用以下函数来获取服务器的响应 1 NSSt
  • 仅更改图表一个区域的背景颜色[重复]

    这个问题在这里已经有答案了 我想仅更改图表的一部分的背景颜色 那可能吗 例如 使用下面的图表 我可能想表明我对重量在 2 到 4 吨之间的汽车特别感兴趣 因此希望使用粉红色背景突出显示该区域 更具体地说 我想覆盖一个透明的粉红色矩形 该矩形
  • 如何在 Swift 中检索对象的类型? [复制]

    这个问题在这里已经有答案了 我似乎无法在 Swift 中找到返回对象类型的函数或方法 如何在 Swift 中检索对象的类型或类 我尝试使用 Obj C 类 但显然不起作用 在Python中你有类似的东西type or isinstance
  • 如何为每个版本提供 2 种风格和 2 种不同的密钥配置以用于调试版本?

    背景 我认为 Google 登录存在一个问题 该问题与我们对我们开发的 2 种不同风格的应用程序使用相同的密钥配置这一事实有关 原因是两者在调试和发布时似乎具有相同的 SHA1 该问题仅存在于第二个版本的发行版本中 在第一种风格的构建和调试
  • TestNG中BeforeClass和BeforeTest的区别

    从 TestNG 官方文档中我们得知 BeforeClass 带注释的方法将在调用当前类中的第一个测试方法之前运行 BeforeTest 带注释的方法将在属于该类内部的任何测试方法之前运行
  • C# 调用 C++ DLL 传递指针到指针参数

    你们能帮我解决以下问题吗 我有一个 C 函数 dll 它将由另一个 C 应用程序调用 我需要的功能之一如下 struct DataStruct unsigned char data int len DLLAPI int API ReadFi
  • pandas.DataFrame 子类的属性在 pickle 后消失

    我试图将属性添加到 pandas DataFrame 的子类中 它们在酸洗和取消酸洗后消失 import cPickle import pandas as pd class MyClass pd DataFrame def init sel
  • 使用 C# 反序列化具有一个空白键的深度嵌套 Json

    我正在尝试将下面的嵌套 Json 反序列化为自定义 c 类型 该类型也在下面进行了描述 但我不断将反序列化对象中的路径键设置为 null 下面是代码 任何有关如何正确反序列化的建议都非常感谢 Json swagger 2 0 info ve
  • Android:strings.xml的默认语言

    我将翻译我的应用程序 strings xml 文件 strings xml 文件的默认语言是什么 因为现在我需要支持意大利语 我现在编写 strings xml 的语言 和英语 我应该使用 string xml 来表示英语并创建 资源 值
  • 带有消息队列的任务处理状态

    我正在开发一个产品数据导入系统 该系统从外部源下载产品数据 将其转换为正确的模式 并存储结果 本质上是一个 ETL 系统 系统处理的核心消息类型是 ImportProductCommand 它指定要导入的产品和来源 然而 导入命令很少单独发
  • 如何使用 JWT + HttpOnly Cookie 正确刷新令牌?

    我已经使用 JWT HttpOnly Cookies 在我的 AspNetCore API 应用程序中成功设置了身份验证 灵感来自this https stormpath com blog token authentication asp
  • Rails 3:无法验证 CSRF 令牌的真实性

    当我尝试通过 REST 客户端发布数据时 我收到这样的警告 Warning Can t verify CSRF token authenticity 怎么解决这个问题 我相信你正在努力做一个POST from a link 默认情况下lin
  • 如何将 PHP 的 stream_select() 与 zlib 过滤器结合使用?

    我目前有一个用 PHP 编写的服务器守护进程 它接受传入连接并使用以下命令为它们创建网络流stream socket 函数并使用轮询活动流stream select 我希望能够添加一个 zlib 过滤器 使用string filter ap
  • Django 版本 1.5:“url”需要非空的第一个参数。 Django 1.5 中的语法发生了变化

    我开始使用 Django 1 5 版 但我的旧代码出现了问题 a href h3 post title h3 a 错误 url 需要非空的第一个参数 Django 1 5 中的语法发生了变化 请参阅文档 文件 一个值得注意的已弃用功能是转向
  • 当单词以 n-gram 开头时,Elasticsearch Edge NGram 分词器得分更高

    假设与 Edge NGram Tokenizer 有以下映射 settings analysis analyzer autocomplete analyzer tokenizer autocomplete tokenizer filter
  • 不同活动中的相同导航抽屉

    我制作了一个工作导航抽屉 如教程中所示开发者 android com http developer android com网站 但现在 我想使用一个导航抽屉 它是我在 NavigationDrawer class 中为我的应用程序中的多个活
  • Python、Unicode 和 Windows 控制台

    当我尝试printWindows 控制台中的字符串 有时我会收到一条错误消息UnicodeEncodeError charmap codec can t encode character 我认为这是因为 Windows 控制台无法处理所有
  • mediawiki mathjax需要使用转义$x$

    我将 MediaWiki 与 MathJax 一起使用 因为很多页面都有数学方程 但在某些页面上 我还需要按原样显示字符串 x 有什么办法可以转义 x 这样它就不会调用 MathJax 并显示为斜体 x 吗 MathJax 支持 来转义表达
  • 在 swift 中如何理解设置为 private 的全局变量?

    我正在完成一本书中的核心数据练习 它首先创建一个单例的帮助器类 我知道全局变量可以在类的范围之外创建 并且可以在整个项目中访问 但是令我困惑的是 书中的一个示例创建了一个全局变量并将其设置为私有 我假设通过将变量设置为私有 它只能由该特定类