gpt4 book ai didi

objective-c - 为属性设置 0 以外的默认值

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:24 25 4
gpt4 key购买 nike

我有一个int属性

@property(nonatomic) int stackTop;

当它被合成时,它的默认值为 0。我想将此默认值设置为 -1。

我试过像这样覆盖setter方法

@sythesize stackTop = _stackTop;

-(void)setStackTop:(int)stackTop
{
_stackTop = -1;
}

然后初始值是-1而不是0,但是当变量stackTop在程序中改变时它并没有改变。例如,我有 self.stackTop++;,但它没有增加。使用非覆盖的 setter 方法,该语句确实会更改值。我究竟做错了什么?解决方案是什么?

最佳答案

在您指定的初始化程序中将其设置为 -1。

编辑:
在回答您的问题时,指定的初始化器是 一个初始化器,在创建类实例时必须始终调用它。它是唯一调用 [super init]; 的地方(它初始化你从父类继承的类的部分),所有其他初始化器必须调用这个指定的初始化器才能确保类已正确设置并设置了所有默认值,包括您要设置的值。

在您的情况下,如果您没有其他以 init 开头的方法,那么您应该在 -(id)init 方法中执行此操作。正如我发布答案后其他一些人所展示的那样,它看起来像这样:

-(id)init {
if (self = [super init]) {
_stackTop = -1;
}
return self;
}

关于objective-c - 为属性设置 0 以外的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158174/

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