gpt4 book ai didi

objective-c - 添加自定义 initWith?

转载 作者:IT老高 更新时间:2023-10-28 11:39:16 26 4
gpt4 key购买 nike

如果我为一个对象创建一个自定义 initWith,我是否本质上包含了我想要覆盖 init 时要添加的代码?

-(id) init {
self = [super init];
if (self) {
NSLog(@"_init: %@", self);
}
return(self);
}

例如

-(id) initWithX:(int) inPosX andY:(int) inPosY {
self = [super init];
if(self) {
NSLog(@"_init: %@", self);
posX = inPosX;
posY = inPosY;
}
return(self);
}

加里

最佳答案

您可以创建一个指定初始化程序,它接受您希望在初始化时提供的所有参数。

然后你从你的其他 -(id)init 调用你指定的初始化器并使用适当的参数。

只有指定的初始化器会初始化父类(super class)[super init]

例子:

- (id)init
{
return [self initWithX:defaultX andY:defaultY];
}

- (id)initWithPosition:(NSPoint)position
{
return [self initWithX:position.x andY:position.y];
}


- (id)initWithX:(int)inPosX andY:(int)inPosY
{
self = [super init];
if(self) {
NSLog(@"_init: %@", self);
posX = inPosX;
posY = inPosY;
}
return self;
}

指定的初始化器是-(id)initWithX:andY:,你可以从其他初始化器调用它。

如果你想扩展这个类,你可以从子类中调用你指定的初始化器。

关于objective-c - 添加自定义 initWith?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1711222/

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