讓我把這個以外行人的語言。
在學習面向對象編程時,您一定已經閱讀過有關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