班级参考说:
如果使用标准init方法初始化UITableViewController对象,则会创建普通样式的表视图.
我不明白,这种行为来自哪里 - 我希望在某些代码或api中看到我
UITableViewController在其api中没有init
一些基类'init如何知道派生类的合适默认样式?
谢谢你的每一个提示
每个对象都有一个init方法,但是很多类都有一个所谓的指定初始化器.这是主要的初始化程序,其他只是调用指定初始化程序的便捷方法.
根据该文档,在这种情况下,该init方法可能看起来像这样:
- (id)init
{
return [self initWithStyle:UITableViewStylePlain];
}
Run Code Online (Sandbox Code Playgroud)
来自超类的方法不会出现在派生类的文档中,除非派生类重写它并且有一些重要的说法.这就是为什么你没有看到init记录UITableViewController,它是NSObjectUITableViewController派生的部分(通过UIScrollView - > UIView - > UIResponder - > NSObject).
至于你问题的第二部分:基类可以(应该)永远不知道有关派生类的任何内容.需要不同默认样式的派生类init再次简单覆盖.