超类:

class MySuperView : UIView{
    var aProperty ;
}

超类的子类继承:

class Subclass : MySuperClass{
    // I want to override the aProperty's setter/getter method
}

我想重写超类属性的setter/getter方法,

如何在Swift中覆盖此方法?请帮帮我,谢谢.

推荐答案

你想用你的定制设置器做什么?如果希望类在设置值之前/之后执行某些操作,可以使用willSet/didSet:

class TheSuperClass { 
   var aVar = 0 
} 

class SubClass: TheSuperClass { 
     override var aVar: Int { 
         willSet { 
            print("WillSet aVar to \(newValue) from \(aVar)") 
        } 
        didSet { 
            print("didSet aVar to \(aVar) from \(oldValue)") 
        } 
    } 
} 


let aSub = SubClass()
aSub.aVar = 5

控制台输出:

将aVar从0设置为5

迪德将阿瓦尔从0设置为5

但是,如果要完全更改setter与超类的交互方式:

class SecondSubClass: TheSuperClass { 
     override var aVar: Int { 
        get {
            return super.aVar
        }
        set { 
            print("Would have set aVar to \(newValue) from \(aVar)") 
        } 
    } 
} 

let secondSub = SecondSubClass()
print(secondSub.aVar)
secondSub.aVar = 5
print(secondSub.aVar)

控制台输出:

0

将aVar从0设置为5

0

Swift相关问答推荐

在swift静态var扩展中,如何或可以访问和返回具体类?

阴影动画的动画不流畅

SWIFT计划计时器方法在时间间隔后未被调用

background Task(.backgroundTask)不适用于MySQL

使用序列初始化字符串的时间复杂度是多少?

在Equatable上引用运算符函数==要求Dictionary.Values符合Equatable

从一个范围减go 多个范围

如何将变量添加到不属于可解码部分的 struct ?

Swift Combine:如何在保留发布者结果顺序的同时进行收集?

有没有更快的方法来循环浏览 macOS 上已安装的应用程序?

在 macOS (Swift) 上获取 BSD 驱动器名称的最佳方法是什么?

如何使用带有 span 样式标签的 Swift XMLParser

在 Vapor 4 中使用协议的通用流利查询

数组使用偏移量对自身执行 XOR

响应 UITextField (UIViewRepresentable) 中的特定按键

从 Finder 打开文件时,SwiftUI 的应用程序(_ openFile:) 从未调用过

如何使用 Date.ParseStrategy 在 Swift 5.6 中将字符串解析为日期?

为什么swiftui中的导航视图栏那么大?

Xcode 7.3 Swift 的语法高亮和代码完成问题

Swift 中的 PageViewController 当前页面索引