我打算用init参数调用init方法中的默认init方法

Zai*_*yed 0 iphone objective-c-2.0 ios

我打算在iOS中使用参数调用init方法中的默认init方法.像这样:

-(id)init{
    self = [super init];
    if (self) {
        Office =          [[NSString alloc]init];
    }
    return self;
}

-(id)initWithOffice:(NSString*)office{
    self = [self init];
    if (self) {
        self.Office = itemDescription;
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是一个好的做法,应该做些什么?我提前感谢您的回复,

tro*_*foe 5

这将工作,但我更喜欢以下,因为它不分配一个空字符串,只是用初始化字符串替换:

-(id)initWithOffice:(NSString*)office{
    self = [super init];    // Not [self init]
    if (self) {
        Office = office;    // OK if using ARC
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

init一种方法没有多大意义; 我想简单地离开Officenil好(NSString对象是不可改变的).正如@ H2CO3所指出的,该initWithOffice方法成为类的指定初始化器,所有其他init方法应该使用它来初始化对象.考虑到这一点,第init一种方法应该是:

-(id)init{
    return [self initWithOffice:nil];
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

237 次

最近记录:

9 年,11 月 前