designated initializer和secondary initializer是什么?

仅在此简单记录概念,方便以后回顾。。。

=====================================

designated initializer是指定初始化方法,提供所有参数;

secondary initializer间接初始化方法,可以有一个或多个,并且提供一个或

更多的默认参数来调用designated初始化的初始化方法。

designated initializer示例:

- (instancetype) initWithName:(NSString *)name
                        date:(NSDate *)birthday
                         age:(int)age
{
    self = [super init];
    if (self) {
        _name = name;
        _birthday = birthday;
        _age = age;
    }
    return self;
}

secondary initializer示例:

- (instancetype)initWithName:(NSString *)name
{
    return [self initWithName:name date:[NSDate date] age:0];
}

- (instancetype)initWithName:(NSString *)name date:(NSDate *)birthday
{
    return [self initWithName:name date:birthday age:0];
}
原文地址:https://www.cnblogs.com/china-fanny/p/6132532.html