gpt4 book ai didi

swift - 如何创建像 viewDidLoad 这样的覆盖函数?

转载 作者:行者123 更新时间:2023-11-28 05:51:49 24 4
gpt4 key购买 nike

我只是想知道如何创建一个像 viewDidLoad 这样的函数,当我创建作为 UIViewController 的子类的类时它总是存在。所以我创建了一个类名SnapKitView。然后我想要实现的是每次我创建一个类是 SnapKitView 的子类时,我的 override awakeFromCode func 总是存在。

例如:

class AuthView: SnapkitView {

//this override func must be always present
override func awakeFromCode() {

}

}

我想要实现的是每次我子类化 SnapKitView 时,override awakeFromCode 已经像 override viewDidLoad 一样被预先填充。那可能吗?

最佳答案

在父类中,在本例中为 SnapKitView,通常像这样定义函数

func awakeFromCode() {
// Put any functionality here that applies to ALL subclasses
}

然后在每个子类中,例如AuthView,使用相同的函数签名(相同的名称和参数,如果有的话)覆盖函数

override awakeFromCode() {
// This will call the original parent function and execute anything in its function body
super.awakeFromCode()

// Then do anything you want this subclass in particular to do here
}


super.awakeFromCode() 将调用该函数的父类实现,您可以将它放在添加的子类功能之前、之后或之间,具体取决于您希望它执行的顺序。

编辑:此外,如果您的子类之一不需要添加任何超出父函数功能的功能,您可以像 awakeFromCode() 一样调用子类中的父函数而不引用 super 。如果您覆盖它并且只想调用父函数而不是子类的函数,则只需要引用 super

您可能对必需的 函数继承感兴趣,您可以在此处阅读更多相关信息:What does the "required" keyword in Swift mean?

关于swift - 如何创建像 viewDidLoad 这样的覆盖函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52685129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com