Ham*_*mad 3 cocoa-touch initialization properties objective-c
我有一个int房产
@property(nonatomic) int stackTop;
Run Code Online (Sandbox Code Playgroud)
当它被合成时,它的默认值为0.我想将此默认值设置为-1.
我尝试覆盖这样的setter方法
@sythesize stackTop = _stackTop;
-(void)setStackTop:(int)stackTop
{
_stackTop = -1;
}
Run Code Online (Sandbox Code Playgroud)
然后初始值为-1而不是0,但是当变量stackTop在程序中发生变化时它不会改变.例如,我有self.stackTop++;,但它没有增加.使用非重写setter方法,该语句确实会更改该值.我究竟做错了什么?解决方案是什么?
在指定的初始值设定项中将其设置为-1.
编辑:
在回答你的问题,指定的初始化是在一个初始化创建类的实例时,必须始终被调用.它是唯一[super init];被调用的地方(初始化从父类继承的类的一部分),并且所有其他初始值设定项必须调用此指定的初始值设定项,以确保正确设置类并且所有默认值均为设置,包括您要设置的那些.
在您的情况下,如果您没有其他方法init,那么您应该在-(id)init方法中执行此操作.正如其他人在我发布答案后所表现的那样,它看起来像这样:
-(id)init {
if (self = [super init]) {
_stackTop = -1;
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9521 次 |
| 最近记录: |