代码之家  ›  专栏  ›  技术社区  ›  Thomas Clayson

为BOOL变量编写getter和setter

  •  6
  • Thomas Clayson  · 技术社区  · 14 年前

    @synthesize ).

    所以现在,需要这样做,我遇到了一个问题,我不知道如何写他们。:p页

    我有这个:

    -(BOOL)isMethodStep {
        return self.isMethodStep;
    }
    
    -(void)setIsMethodStep:(BOOL)theBoolean {
        if(self.isMethodStep != theBoolean){
            self.isMethodStep = theBoolean;
        }
    }
    

    我尝试过在setter中不使用if查询,但似乎都不起作用。用断点加载它表明,由于某种原因,它被困在getter方法的连续循环中。

    谢谢

    2 回复  |  直到 8 年前
        1
  •  12
  •   Vladimir    14 年前

    -(BOOL)isMethodStep {
        return self.isMethodStep;
    }
    

    return self.isMethodStep ;调用相同的 isMethodStep 导致无限循环的方法。塞特也是这样。

    -(BOOL)isMethodStep {
        return isMethodStep;
    }
    
    -(void)setIsMethodStep:(BOOL)theBoolean {
        if(isMethodStep != theBoolean){
            isMethodStep = theBoolean;
        }
    }
    
        2
  •  4
  •   David Gelhar    14 年前

    你不想用 self. 属性语法,因为它再次调用setter/getter,而不是直接赋给变量。

    你只需要说:

    -(BOOL)isMethodStep {
        return isMethodStep;
    }
    
    -(void)setIsMethodStep:(BOOL)theBoolean {
        isMethodStep = theBoolean;
    }