覆盖setter方法,并获取信息

Cra*_*aig 7 setter initialization objective-c

我有一个setter方法(setMinimumNumberOfSides),我想在使用synthesize后覆盖它.在其中,我对实例变量进行约束以确保int在某些范围内.

稍后在自定义init方法中,我正在设置另一个实例变量(numberOfSides),但我需要确保在bounds中正确设置了minimumNumberOfSides和maximumNumberOfSides.我尝试将setter上的返回值更改为BOOL,因此如果成功/失败,我可以传回YES或NO,但是这会创建一个冲突的方法,我猜是因为我正在使用合成并覆盖setter.

如何轻松获取信息以检查setter是否被调用并成功返回?

-(void)setNumberOfSides:(int)sides
{
    if ((sides < maximumNumberOfSides) && (sides > minimumNumberOfSides))
    {
        numberOfSides = sides;  
    }
    else
        NSLog (@"Invalid number of sides: %d is outside the constraints allowed", sides);


}

-(void)setMinimumNumberOfSides:(int)minimum 
{
    if (minimum > 2)
        minimumNumberOfSides = minimum;

}

-(void)setMaximumNumberOfSides:(int)maximum 
{
    if (maximum <= 12)
        maximumNumberOfSides = maximum;

}

-(id)initWithNumberOfSides:(int)sides minimumNumberOfSides:(int)min maximumNumberOfSides:(int)max 
{
    if (self = [super init])
    {
        self.minimumNumberOfSides = min;
        self.maximumNumberOfSides = max;

        self.numberOfSides = sides;
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)

dst*_*rkr 7

如果您计划实现getter和setter,则不必合成numberOfSides.没有@synthesize numberOfSides你可以选择返回BOOL.您需要相应地在接口中声明getter/setter.

顺便说一下,另一种方法是使用合成的getter/setter并添加一个-(BOOL)isNumberOfSidesValid执行此检查的单独方法.