Objective-C中编程中一些推荐的书写规范小结

2020-01-14 22:32:41刘景俊

- (instancetype)initWithTitle:(NSString *)title
                         date:(NSDate *)date
                     location:(CLLocation *)location
{
    self = [super init];
    if (self) {
        _title    = title;
        _date     = date;
        _location = location;
    }
    return self;
}

- (instancetype)initWithTitle:(NSString *)title
                         date:(NSDate *)date
{
    return [self initWithTitle:title date:date location:nil];
}

- (instancetype)initWithTitle:(NSString *)title
{
    return [self initWithTitle:title date:[NSDate date] location:nil];
}

@end


initWithTitle:date:location: 就是 designated 初始化方法,另外的两个是 secondary 初始化方法。因为它们仅仅是调用类实现的 designated 初始化方法。

 

一个类应该有且只有一个 designated 初始化方法,其他的初始化方法应该调用这个 designated 的初始化方法(有例外)。

3. 当定义一个新类的时候有三个不同的方式:
(1)不需要重载任何初始化函数
(2)重载 designated initializer
(3)定义一个新的 designated initializer
第一种方式不需要增加类的任何初始化逻辑,也就是说在类中不必重写父类的初始化方法也不需要其他操作。

第二种方式要重载父类的指定初始化方法。例子:

复制代码
@implementation ZOCViewController

 

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil