相关文章推荐
买醉的钥匙  ·  市政府关于印发南京市2025年经济社会发展重 ...·  4 月前    · 
有腹肌的苦瓜  ·  通用规范汉字表(8105个)-学报编辑部·  1 年前    · 
八块腹肌的松鼠  ·  约1.14万亿倍太阳质量!我国天文学家算出仙 ...·  1 年前    · 
深沉的伤疤  ·  【强推】《替阿姐出嫁之后》古耽车香/双洁/双 ...·  2 年前    · 
无邪的打火机  ·  3、JACK Audio Connect ...·  2 年前    · 
Code  ›  必须由子类重写的Swift类方法开发者社区
https://cloud.tencent.com/developer/ask/sof/95550
绅士的蚂蚁
2 年前
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
提问
问 必须由子类重写的Swift类方法
Stack Overflow用户
提问于 2014-06-09 06:07:37
EN

在Swift中有没有一种标准的方法来创建一个“纯虚拟函数”,即。一个是 必须被每个子类覆盖的 ,如果不是这样,会导致编译时错误?

8 58.3K 0 票数 107
EN
swift
abstract
swift-protocols

回答 8

Stack Overflow用户

回答已采纳

发布于 2014-06-09 06:18:06

您有两个选择:

1.使用协议

将超类定义为协议而不是类

Pro :编译时检查每个“子类”(不是实际的子类)是否实现了所需的方法

Con :“超类”(协议)不能实现方法或属性

2.在方法的超级版本中断言

示例:

class SuperClass {
    func someFunc() {
        fatalError("Must Override")
class Subclass : SuperClass {
    override func someFunc() {
}

Pro :可以在超类中实现方法和属性

Con :无编译时检查

票数 169
EN

Stack Overflow用户

发布于 2018-07-14 07:19:22

下面的代码允许从类继承,还允许对协议的编译时进行检查:)

protocol ViewControllerProtocol {
    func setupViews()
    func setupConstraints()
typealias ViewController = ViewControllerClass & ViewControllerProtocol
class ViewControllerClass : UIViewController {
    override func viewDidLoad() {
        self.setup()
    func setup() {
        guard let controller = self as? ViewController else {
            return
        controller.setupViews()
        controller.setupConstraints()
    //.... and implement methods related to UIViewController at will
class SubClass : ViewController {
    //-- in case these aren't here... an error will be presented
    func setupViews() { ... }
    func setupConstraints() { ... }
}
票数 63
EN

Stack Overflow用户

发布于 2014-06-09 06:15:39

没有任何对抽象类/虚函数的支持,但是你可以在大多数情况下使用协议:

protocol SomeProtocol {
 
推荐文章
买醉的钥匙  ·  市政府关于印发南京市2025年经济社会发展重大项目名单的通知_政府公报_南京市人民政府
4 月前
有腹肌的苦瓜  ·  通用规范汉字表(8105个)-学报编辑部
1 年前
八块腹肌的松鼠  ·  约1.14万亿倍太阳质量!我国天文学家算出仙女星系“体重”-中国科技网
1 年前
深沉的伤疤  ·  【强推】《替阿姐出嫁之后》古耽车香/双洁/双视角年上/1v1/he海棠 - 哔哩哔哩
2 年前
无邪的打火机  ·  3、JACK Audio Connect Kit低延迟音频服务——Qjackctl基本设置_huanghaoAudio的博客-CSDN博客
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号