Swift 如何创建类似viewDidLoad的覆盖函数?

Swift 如何创建类似viewDidLoad的覆盖函数?,swift,Swift,我只是想知道如何创建一个类似于func的viewDidLoad,当我创建UIViewController的子类时,它总是存在。所以我创建了一个类名SnapKitView。然后,我想要实现的是,每次我创建一个属于SnapKitView子类的类时,我的override awakeFromCodefunc总是存在 例如: 我想要实现的是,每当我将SnapKitView子类化时,override awakeFromCode已经像override viewDidLoad一样预先填充。可能吗 在父类中,在本

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

例如:


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

在父类中,在本例中为
SnapKitView
,通常按如下方式定义函数

func awakeFromCode() {
    // Put any functionality here that applies to ALL subclasses
}
然后在每个子类(如
AuthView
)中,使用相同的函数签名(相同的名称和参数,如果有)重写函数


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

编辑:另外,如果您的一个子类不需要添加任何超出父函数功能范围的功能,您可以在子类中调用父函数,通常类似于
awakeFromCode()
,而不引用
super
。如果您重写它并且只想调用父函数而不想调用子类的函数,那么只需要引用
super


您可能对
required
函数继承感兴趣,您可以在此处阅读更多相关内容:

为了澄清,是否要在每个子类中重新定义
awakeFromCode
,还是希望每个子类调用父类中定义的
awakeFromCode
?@WillB我希望每个子类中都有awakeFromCode。使用
awakeFromCode()创建一个
protocol
相反。那么您想要一种在创建文件时自动创建某些方法的模板吗?我想要实现的是,每次我将SnapKitView子类化时,
override awakeFromCode
已经像
override viewDidLoad
一样预先填充。这可能吗?@AlvinJohn不可能,不可能。当Xcode自动生成
override viewdiload
函数时,它只是使函数的外壳具有一个空的主体。除非您向该shell中添加了一些内容,否则它不会执行任何操作,因为它只调用父级的
viewDidLoad
,然后就完成了。@AlvinJohn我还应该提到
必需的
继承,这可能更接近您想要的继承。阅读这里:有没有一种方法可以告诉xcode在
SnapKitView
是子类时自动生成覆盖“func awakeFromCode”shell?@AlvinJohn我从未尝试过,但根据这一点,您可以:
func awakeFromCode() {
    // Put any functionality here that applies to ALL subclasses
}
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
}