2011-03-09 70 views
4

类的裁判说:的UITableViewController初始化与initWithStyle

如果使用标准的init方法来初始化一个UITableViewController对象,创建于普通样式表视图。

我不明白,在这种行为来自 - 我想看看我在一些代码 或API,但

  • 的UITableViewController没有初始化在其API

  • 怎么可能一些基类的init知道派生类的合适的默认样式?

感谢每一个提示

回答

8

每个对象都有一个init方法,但很多类都有一个所谓的指定的初始值设定项。这是主要的初始化器,其他的只是调用指定初始化器的简便方法。

根据那个文件夹,在这种情况下,init方法可能看起来是这样的:

从超
- (id)init 
{ 
    return [self initWithStyle:UITableViewStylePlain]; 
} 

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

至于你的问题的第二部分:基类可以(应该)永远不知道派生类的任何事情。需要不同默认样式的派生类将简单地重写init

+0

那么我宁愿在文档中使用init,因为它有一些重要的东西要说(不同于NSObject的) - 而不是把它放在一些神秘的讨论评论中!无论如何thanx :-) –

2

在UITableViewController.m

- (id) init 
{ 
    return [self initWithStyle:UITableViewStylePlain]; 
} 

init方法将调用指定的初始化。

+0

但是这个实现是不可用的,所以我真的更喜欢在文档中的init ... –

+0

这解释了为什么initWithStyle被神秘地称为UITableViewController默认初始化的结果。我同意这有点令人困惑。 – ComDubh

相关问题