类引用说:
如果您使用标准的 init 方法来初始化 UITableViewController 对象,则会创建一个普通样式的 TableView 。
我不明白,这种行为是从哪里来的——我想在一些代码中看到我 或 api 但
UITableViewController 在其 api 中没有初始化
一些基类的 init 如何知道派生类的合适默认样式?
感谢每一个提示
最佳答案
每个对象都有一个init
方法,但是很多类都有一个所谓的指定 初始化器。这是主要的初始化器,其他的只是调用指定初始化器的便捷方法。
根据该文档,在这种情况下,init
方法可能看起来像这样:
- (id)init
{
return [self initWithStyle:UITableViewStylePlain];
}
来自父类(super class)的方法不会出现在派生类的文档中,除非派生类重写它并且有重要的说明。这就是为什么您没有在 UITableViewController
中看到 init
的原因,它是 NSObject
的一部分,UITableViewController 从中派生(通过 UIScrollView -> UIView -> UIResponder -> NSObject)。
至于你问题的第二部分:基类可以(应该)永远不知道派生类的任何事情。需要不同默认样式的派生类简单地再次覆盖 init
。
关于objective-c - UITableViewController init 与 initWithStyle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5246622/