fileprivate 保证您不能从此类实例化新对象。所以这是不可能的:
let recentItemsController = RecentItemsController()
注意:'()'。
我假设它打算用作单例。
这就是使它成为静态的原因,这就是为什么您从未编写或找到此类的新实例。
您的RecentItemsController 类中应该有这个静态类的共享实例:
static let sharedRecentItemsController = RecentItemsController()
并在需要的任何地方使用该实例,如下所示:
let recentItemsController = RecentItemsController.sharedRecentItemsController
这保证您在代码中的任何地方都使用相同的对象(因此是静态的)。
额外信息:
fileprivate 几乎与普通的private 属性相同,后者包含在该类中,但可以在扩展中使用。
还可以阅读这篇精彩的博文here 中有关静态和单例类的更多信息
编辑
我想我会补充一点:也可能是 init 设置为私有,以绝对保证不能为结构创建新实例,因为结构提供了一个成员初始化器:
如果结构类型没有定义任何自己的自定义初始化器,则它们会自动接收成员初始化器。与默认初始值设定项不同,结构接收成员初始值设定项,即使它存储了没有默认值的属性。 - Apple Developer, section: Memberwise Initializers for Structure Types
因此,如果您实际上将其用作 Singleton,则使用类比使用结构更好。