UITableViewController init与initWithStyle

Kla*_*ens 4 objective-c ios

班级参考说:

如果使用标准init方法初始化UITableViewController对象,则会创建普通样式的表视图.

我不明白,这种行为来自哪里 - 我希望在某些代码或api中看到我

  • UITableViewController在其api中没有init

  • 一些基类'init如何知道派生类的合适默认样式?

谢谢你的每一个提示

Dar*_*ust 8

每个对象都有一个init方法,但是很多类都有一个所谓的指定初始化器.这是主要的初始化程序,其他只是调用指定初始化程序的便捷方法.

根据该文档,在这种情况下,该init方法可能看起来像这样:

- (id)init
{
    return [self initWithStyle:UITableViewStylePlain];
}
Run Code Online (Sandbox Code Playgroud)

来自超类的方法不会出现在派生类的文档中,除非派生类重写它并且有一些重要的说法.这就是为什么你没有看到init记录UITableViewController,它是NSObjectUITableViewController派生的部分(通过UIScrollView - > UIView - > UIResponder - > NSObject).

至于你问题的第二部分:基类可以(应该)永远不知道有关派生类的任何内容.需要不同默认样式的派生类init再次简单覆盖.