OC中类的初始化

 

 所谓指定初始化方法一般是参数最多、最齐全的那个init方法,通过它可以指定该类所有的实例变量(成员变量)的值。

而其它初始化方法会调用指定初始化方法,某些参数可能会使用默认值。

如:

@interface ClassA : NSObject

- (instancetype)initWithInt:(int)val NS_DESIGNATED_INITIALIZER;  // 指定初始化方法

@property int data;

@end

@implementation ClassA

- (instancetype)initWithInt:(int)val{
    self = [super init];
    if (self) {
        self.data = val;
    }
    return self;
}

- (instancetype)init {
    return [self initWithInt:0];
}

@end

利用 NS_DESIGNATED_INITIALIZER 来告诉编译器当前方法是指定初始化方法,并在实现中遵守OC初始化的一般方式(先调用父类的指定初始化方法-->判断得到的self是否合法-->初始化子类的数据)

如果没有调用父类的指定初始化方法,编译器会报警。

 

posted @ 2020-12-18 14:17  NeoZy  阅读(318)  评论(0编辑  收藏  举报