让我把这个以外行人的语言。
在学习面向对象编程时,您一定已经阅读过有关Cars和一个Prius如何成为Car
的对象。 你基本上有一个超Car
使所有汽车继承,像普锐斯,福克斯等。对于普锐斯是一辆车,在面向对象的术语,继承,普锐斯必须首先从Car
继承,然后添加普锐斯的具体属性/属性。
同样的方式,每次你在Objective-C(和几乎每一个面向对象的编程语言)使类,你必须首先从父类继承。根类是NSObject
(objective-c)。
[super init]
初始化父类,所有它的属性。在成功之后,您可以添加自己的属性/属性,这些属性是特定于您的课程的。
一个常见的例子是当您覆盖UITableViewCell
的子类时覆盖init
方法。
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
UIImageView* imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Foo"]];
imageView.frame = CGRectMake(0, 0, 100, 50);
[self.contentView addSubview:imageView];
}
return self;
}
这里,initWithStyle:reuseIdentifier:
被覆盖。它首先调用[super initWithStyle:style reuseIdentifier:reuseIdentifier]
。这会初始化一个默认的UITableViewCell
,其中style
和reuseIdentifier
提供给它。您可以在此访问UITableViewCell
的所有房产。另外,imageView被添加到单元格中,该单元格只针对该单元格。
的Object Initialization
文件是真的好,以帮助理解这一点。
啊,我现在得到它。感谢idmean和micheal welch。因此,self是调用这些继承的inits的对象,即使inits属于父类,并且这些继承的inits将调用对象(需要初始化的子对象)称为self。得到它了! – 2015-02-07 20:31:44