我正在读一本书,它教导我们应该实现一个指定的类初始化器,然后让其他初始化器调用这个(我同意)。
现在,我在这本书的一节中,它说:“UITableViewController 的指定初始化程序是 initWithStyle:”。然后像这样进入实现:
// inside ItemsViewController.m, subclass of UITableViewController
-(id) init{
// Call the superclass's designated initializer
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
}
return self;
}
- (id)initWithStyle:(UITableViewStyle)style
{
return [self init];
}
在这段代码之后,书中还说:“这将确保 ItemsViewController 的所有实例都使用 UITableViewStyleGrouped 样式,无论向它发送什么初始化消息。”
为了坚持我在文章开头描述的原则,我可能会这样实现这个类:
// inside ItemsViewController.m, subclass of UITableViewController
// Implement the designated initializer first
-(id) initWithStyle:(UITableViewStyle)style
// Call the superclass's designated initializer
self = [super initWithStyle:UITableViewStyleGrouped];
if (self) {
}
return self;
}
// Call designated initializer
- (id)init
{
return [self initWithStyle: nil];
}
但我想我错过了什么?我认为这本书init
在他们的情况下用作指定的初始化程序?