objective-c - UITableViewController init 与 initWithStyle

标签 objective-c ios

类引用说:

如果您使用标准的 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/

相关文章:

ios - Xcode 4.3 : missing icons for iOS apps in Organizer's archives

iOS - 设置值 :forUndefinedKey problem on a subView

ios - 以可变速率为自定义 CAShapeLayer 设置动画

objective-c - 向 NSImageView 添加阴影

objective-c - 为什么设置我的导航栏背景图片会影响导航栏的大小?

objective-c - 检测屏幕/应用程序窗口的哪一部分正在使用 OpenGL?

ios - 使用 NSURLConnection 进行异步调用后处理数据的更好方法是什么?

Objective-C:指向 UITextField 的弱指针-> UITextField 不出现

ios - 脱机时 SDWebImageView 缓存问题和转义 URL 百分比

ios - iPad 运行 iPhone 应用程序 - 哪个版本?