对Swift/编程完全陌生,所以请原谅这个看似明显的问题;有人能给我解释一下超级前缀的功能吗?它是否允许重写保留父类的功能?我正在学习的教程告诉我,它用于让父类知道何时调用子类?我不确定我完全理解这一点。提前感谢您的帮助!
import UIKit
class ViewController: UITableViewController {
var pictures = [String]()
override func viewDidLoad() {
super.viewDidLoad()
let fm = FileManager.default
let path = Bundle.main.resourcePath!
let items = try! fm.contentsOfDirectory(atPath: path)
for item in items {
if item.hasPrefix("nssl") {
pictures.append(item)
}
}
}
}
想象UITableViewController
在viewDidLoad
中做了一些操作所必需的东西,就像你的视图控制器所做的那样。当您重写继承的方法时,将调用您的方法而不是父类的方法。现在您有机会进行初始化,但是您剥夺了超类进行初始化的机会。
要解决这个问题,您可以自己调用super实现。很多UIKit视图周期方法(view(Will|Did)(Load|Layout|Appear)
)不严格需要被调用,因为超类实现什么也不做,但有些做。省略它们可能会导致奇怪的结果,因此养成调用这些方法的超类实现的习惯通常是一种好做法。