相关疑难解决方法(0)

在Java中比较Swift与接口中的协议

我正在浏览Apple开发者页面的iOS教程.

在我看来protocol,interface几乎具有相同的功能.

  • 这两者有什么不同吗?

  • 项目中的差异用法?

更新

是的,我看过上面的链接,我仍然不知道什么区别之间使用protocolinterface.当我提出这样的问题时,我想看一个关于这个主题的简单解释.有时从文档中获取所有内容可能很困难.

java swift

134
推荐指数
2
解决办法
3万
查看次数

Swift语言中的抽象函数

我想用快速语言创建一个抽象函数.可能吗?

class BaseClass {
    func abstractFunction() {
        // How do I force this function to be overridden?
    }
}

class SubClass : BaseClass {
    override func abstractFunction() {
        // Override
    }
}
Run Code Online (Sandbox Code Playgroud)

inheritance abstract-class swift

118
推荐指数
7
解决办法
5万
查看次数

Swift - 要求实现协议的类是某个类的子类

我正在创建几个NSView类,所有类都支持特殊操作,我们将调用它们transmogrify.乍一看,这似乎是协议的完美之处:

protocol TransmogrifiableView {
    func transmogrify()
}
Run Code Online (Sandbox Code Playgroud)

然而,该协议并没有执行,每一个TransmogrifiableView是一个NSView为好.这意味着NSView我在a上调用的任何方法TransmogrifiableView都不会键入check:

let myView: TransmogrifiableView = getTransmogrifiableView()
let theSuperView = myView.superView // error: TransmogrifiableView does not have a property called 'superview'
Run Code Online (Sandbox Code Playgroud)

我不知道如何要求实现我的协议的所有类也是子类NSView.我试过这个:

protocol TransmogrifiableView: NSView {
    func transmogrify()
}
Run Code Online (Sandbox Code Playgroud)

但是Swift抱怨协议不能从类继承.将协议转换为仅使用类的协议没有帮助

protocol TransmogrifiableView: class, NSView {
    func transmogrify()
}
Run Code Online (Sandbox Code Playgroud)

我不能创建TransmogrifiableView超类而不是协议,因为我的一些TransmogrifiableView类必须是其他非transmogrifiable视图的子类.

我应该如何要求所有TransmogrifiableView的也可以NSView的?我真的不想用as"转换"来改变我的代码,这种转换形式不好而且分散注意力.

inheritance protocols interface typechecking swift

37
推荐指数
4
解决办法
2万
查看次数