Mic*_*l C 3 iphone xcode objective-c ios
-(id)initWithStrAndDate: (NSString *)inString date:(NSDate *)inDate
{
if (self = [super init])
{
[self setStr:inString];
[self setDate:inDate];
}
return self;
}
-(id)initWithStr: (NSString *)inString
{
return [self initWithStrAndDate:inString date:[NSDate date]];
}
-(id)init
{
return [self initWithStr:nil];
}
Run Code Online (Sandbox Code Playgroud)
嘿伙计们,我不确定我是否知道如何使用"指定的初始化程序".首先不是
return [self initWithStrAndDate:inString date:[NSDate date]];
Run Code Online (Sandbox Code Playgroud)
这个错了?不应该这样:
return [self initWithStrAndDate:inString date:nil];
Run Code Online (Sandbox Code Playgroud)
还有为什么我们使用3种不同的初始化器?我的意思是什么时候我们使用" - (id)init"或" - (id)initWithStr:(NSString*)inString"或第一个?
CRD*_*CRD 10
当一个类有多个初始化器时,它们中的一个或有时更多被定义为指定的初始化器 - 这些初始化器必须完全初始化该类并调用超类的指定初始化器,以便完全初始化它.
其他初始化程序称为辅助初始化程序,并且必须通过调用self最终调用其中一个指定的初始化程序.(参见Cocoa Fundamentals - 多个初始化器.)
这个模型有两个主要后果:
所以你的例子是正确的 - 1个指定的初始化器和2个辅助初始化器,它们通过调用来调用指定的初始化器self.
| 归档时间: |
|
| 查看次数: |
2764 次 |
| 最近记录: |