类的裁判说:的UITableViewController初始化与initWithStyle
如果使用标准的init方法来初始化一个UITableViewController对象,创建于普通样式表视图。
我不明白,在这种行为来自 - 我想看看我在一些代码 或API,但
的UITableViewController没有初始化在其API
怎么可能一些基类的init知道派生类的合适的默认样式?
感谢每一个提示
类的裁判说:的UITableViewController初始化与initWithStyle
如果使用标准的init方法来初始化一个UITableViewController对象,创建于普通样式表视图。
我不明白,在这种行为来自 - 我想看看我在一些代码 或API,但
的UITableViewController没有初始化在其API
怎么可能一些基类的init知道派生类的合适的默认样式?
感谢每一个提示
每个对象都有一个init
方法,但很多类都有一个所谓的指定的初始值设定项。这是主要的初始化器,其他的只是调用指定初始化器的简便方法。
根据那个文件夹,在这种情况下,init
方法可能看起来是这样的:
- (id)init
{
return [self initWithStyle:UITableViewStylePlain];
}
方法不会出现在派生类的文档,除非在派生类中重写它并且有一些重要的话要说。这就是为什么你看不到init
记录在UITableViewController
,它是从其中UITableViewController派生(通过UIScrollView - > UIView - > UIResponder - > NSObject)NSObject
的一部分。
至于你的问题的第二部分:基类可以(应该)永远不知道派生类的任何事情。需要不同默认样式的派生类将简单地重写init
。
在UITableViewController.m
- (id) init
{
return [self initWithStyle:UITableViewStylePlain];
}
的init
方法将调用指定的初始化。
但是这个实现是不可用的,所以我真的更喜欢在文档中的init ... –
这解释了为什么initWithStyle被神秘地称为UITableViewController默认初始化的结果。我同意这有点令人困惑。 – ComDubh
那么我宁愿在文档中使用init,因为它有一些重要的东西要说(不同于NSObject的) - 而不是把它放在一些神秘的讨论评论中!无论如何thanx :-) –