swift - 结构中的私有(private)静态变量

标签 swift

在此示例中,getInstance 是公共(public)的,因此可访问是有意义的,但私有(private)变量也可访问,为什么?

public class SingleObject {

    public struct Static {

        private static var object: SingleObject?

        public static func getObject() -> SingleObject {
            if (object == nil) {
                object = SingleObject()
            }
            return object!
        }
    }

}

SingleObject.Static.object //why private is accessible here?

SingleObject.Static.getObject()

最佳答案

从 Swift 3 开始,示例代码不再编译。添加了一个名为 fileprivate 的新修饰符,其工作方式与 private 过去的工作方式相同(即它可以被同一文件中的任何其他内容看到)。

private 在 Swift 3 和 4 中的工作方式更像你期望的那样 - 在 Swift 3 中,它只能在声明它的上下文中访问,而在 Swift 4 中它也可以可以从该类型的扩展访问(但前提是它们在同一文件中)。

关于swift - 结构中的私有(private)静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27713749/

相关文章:

objective-c - 在 Apple 的 NSObject 文档中, "receiver"的含义是什么?

Swift 如何处理自动续订订阅接收和验证

swift - 如何使用 try catch 停止在 swift3 中崩溃

xml - 快速完成处理程序

swift - 无法设置可选值,打印 nil

arrays - 从数组中获取多个值?

swift - 无论如何,表格 View 单元格都会保持突出显示

ios - UISearchController 重叠 TableView 的 ScrollView 。解决这个问题的最佳方法是什么?

swift - 当用户在单元格中键入内容时,使 UITableView 标题自动调整大小

swift - 我如何获取 UITableViewCell 内的 textView 的文本值