ios – 不能在另一个文件的扩展中使用私有属性

前端之家收集整理的这篇文章主要介绍了ios – 不能在另一个文件的扩展中使用私有属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我不能在扩展中使用私有财产.我的扩展名在另一个文件中.

我怎样才能在扩展中使用私有财产?

编辑:因为它不是从swift2更改为swift3

解决方法

在您的类型的扩展中使用属性的规则实际上与在其他任何地方使用该属性的规则没有任何不同.

如果属性被声明为private,则除了在声明范围之外的任何地方都不能使用它.这意味着即使在同一个文件中也是如此.

如果属性声明为fileprivate,则只能在声明它的文件中(以及该文件中的任何内容)使用它.

如果属性声明为internal(默认值),则只能在声明它的模块中(以及该文件中的任何内容)使用它.

如果属性声明为public或open,则模块中的任何内容以及模块外部的任何内容都可以使用它来导入声明它的模块.

没有办法以这样的方式声明变量,即它可以被类型的扩展使用,但不能被类型之外的其他东西使用.这实际上并不是从Swift 2到Swift 3的变化.情况一直如此.你正在寻找什么其他语言称为受保护. Swift没有,也从未有过与其他语言相同的保护.

最接近的是在一个文件中声明一个类型及其所有扩展,并禁止在该文件中声明任何其他类型或类型扩展.然后,您可以将属性标记为fileprivate,并通过该文件中的扩展名使用它们.这仍然不允许在文件之外通过该类型的扩展来使用该属性,并且它不会阻止将来的开发人员在使用该属性的该文件添加另一种类型或另一种类型的扩展.

猜你在找的iOS相关文章