加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在swift中使用内部类实现公共协议

发布时间:2020-12-14 04:33:36 所属栏目:百科 来源:网络整理
导读:所以我正在编写一个 Swift框架,我想通过协议公开公开一些对象. 例如: public protocol Thing : class { var x : Int { get }} 我想隐藏我的实现细节,所以我做了一个内部类: internal class ThingImpl : Thing { public private(set) var x : Int = 0} 并通
所以我正在编写一个 Swift框架,我想通过协议公开公开一些对象.

例如:

public protocol Thing : class {
    var x : Int { get }
}

我想隐藏我的实现细节,所以我做了一个内部类:

internal class ThingImpl : Thing {
    public private(set) var x : Int = 0
}

并通过工厂方法销售新东西:

public func newThing() -> Thing {
    return ThingImpl()
}

我无法理解的是为什么编译器警告我在ThingImpl中使var x公开并鼓励我将其声明为内部.

enter image description here

尽管有警告,一切都运行良好,如果我注意到警告并更改为内部私有(设置)var x:Int = 0,警告消失,事情仍然正常.

在我看来,将var公开是正确的事情,因为它正在实施的公共协议中是公开的.
我在这里错过了什么吗?谢谢.

解决方法

ThingImpl是一个内部类.因此它将覆盖public x变量的可访问性,从而有效地使该变量成为内部变量.因此,将此变量的可访问性设置为public是多余的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读