协议实现init的访问控制

时间:2017-06-28 09:39:39

标签: swift singleton protocols

尝试对将由单例类实现的协议强制实施访问控制。 我希望这个类有一个fileprivate init,有没有办法强制执行这种行为? 由于协议不是类,我不能将init放在协议扩展中。

1 个答案:

答案 0 :(得分:0)

根据Apple文档:

  

协议定义中每个要求的访问级别自动设置为与协议相同的访问级别。您不能将协议要求设置为与其支持的协议不同的访问级别。这可确保在采用该协议的任何类型上都可以看到所有协议的要求。

链接Protocol docs

编辑:我误解了这个问题。

如果我理解了OP的澄清,我现在知道确保该类是单例的唯一方法是将其init方法标记为private或fileprivate。

对于我只使用静态方法的简单单例,我有这个:

private init() {

}