首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift中的仅类协议

Swift中的仅类协议
EN

Stack Overflow用户
提问于 2016-07-08 23:41:20
回答 2查看 27.1K关注 0票数 32

我希望我的一些类(不是所有类)使用文档中的'Class-Only Protocols'来符合。我要做的是

代码语言:javascript
复制
protocol RefreshData: class, ClassA, ClassB
{
    func updateController()
}

我得到了一些错误

代码语言:javascript
复制
non class type 'RefreshData cannot inherit from classA
non class type 'RefreshData cannot inherit from classB

我不确定我是否完全按照文档中的说明进行操作。有人对此有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2017-02-23 15:02:40

最新版本的Swift可以做到这一点!我会做一个针对你想要的类的协议和协议扩展!(将扩展限制到特定的类)

代码语言:javascript
复制
    protocol Movable {
        func moveForward()
        func moveBackward()
    }

    extension Movable where Self: Car {
        func moveForward() {
            self.location.x += 10;
        }

        func moveBackward() {
            self.location.x -= 10;
        }
    }
    extension Movable where Self: Bike {
        func moveForward() {
            self.x += 1;
        }

        func moveBackward() {
            self.x -= 1;
        }
    }

    class Car: Movable {
        var location: CGPoint

        init(atLocation location: CGPoint) {
            self.location = location
        }
    }

    class Bike: Movable {
        var x: Int

        init(atX x: Int) {
            self.x = x
        }
}
票数 9
EN

Stack Overflow用户

发布于 2016-07-08 23:47:30

代码语言:javascript
复制
protocol RefreshData : class
{
    func updateController()
}

class ClassA : RefreshData
{
    func updateController() {}
}

class ClassB : RefreshData
{
    func updateController() {}
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38270635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档