我的头中提到了一个ivar

@interface MyClass : UIView{
    int thistone;}
- (IBAction)toneButton:(UIButton *)sender;
@property int thistone;
@end


并且我在实现中对其进行了综合:

@implementation MyClass
@synthesize thistone;
- (IBAction)toneButton:(UIButton *)sender {
if(thistone<4)
    {thistone=1000;}   // I hate this line.
    else{thistone=thistone+1; }
}


我找不到(或在任何手册中找到)设置非零初始值的方法。我希望它从1000开始,每按一次按钮增加1。该代码完全符合我的意图,但是我猜想有一种更合适的方法可以节省上面的if / else语句。非常感谢在线文档中的代码修复或指向特定行的指针。

最佳答案

每个对象都有实例化时调用的init方法的变体。实现此方法以进行此类设置。 UIView特别具有initWithFrame:initWithCoder。最好覆盖全部并调用一个单独的方法来执行所需的设置。

例如:

- (void)commonSetup
{
    thisTone = 1000;
}


- (id)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
        [self commonSetup];
    }

    return self;
}


- (id)initWithCoder:(NSCoder *)coder
{
    if (self = [super initWithCoder:coder])
    {
        [self commonSetup];
    }

    return self;
}

关于ios - 如何在iOS中设置非零初始值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12632603/

10-10 21:04