gpt4 book ai didi

ios - 我打算在带有参数的 init 方法中调用默认的 init 方法

转载 作者:行者123 更新时间:2023-11-28 18:22:53 26 4
gpt4 key购买 nike

我打算在 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;
}

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

最佳答案

这行得通,但我更喜欢以下内容,因为它不会分配空字符串,只会被初始化字符串替换:

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

第一个 init 方法没有多大意义;我认为简单地将 Office 保留为 nil 更好(NSString 对象是不可变的)。正如@H2CO3 所指出的,initWithOffice 方法成为该类的指定初始化程序,所有其他init 方法都应该使用它来初始化对象.考虑到这一点,第一个 init 方法应该是:

-(id)init{
return [self initWithOffice:nil];
}

关于ios - 我打算在带有参数的 init 方法中调用默认的 init 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17065323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com