最佳答案
您正在创建您的 NewsFeedTableView
使用不带参数的初始化程序。 UIView
的指定初始化器这是这个:
init(frame: CGRect)
在任何继承自
UIView
的类的初始化期间,将始终调用指定的初始化程序。 . init()
UIView
的初始化器会用 CGRect.zero
调用它作为参数。现在,查看 init(frame:style:) 的文档
UITableView
的初始化器:If you initialize the table view with the UIView method init(frame:), the UITableView.Style.plain style is used as a default.
所以基本上:
1.
NewsFeedTableView()
来电NewsFeedTableView(frame: CGRect.zero)
2. NewsFeedTableView(frame: CGRect.zero)
来电NewsFeedTableView(frame: CGRect.zero, style: .plain)
这就是为什么您的重写初始化程序被调用的原因
关于ios - tableView init() 层次结构如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60711178/