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)
如果您计划实现getter和setter,则不必合成numberOfSides.没有@synthesize numberOfSides
你可以选择返回BOOL.您需要相应地在接口中声明getter/setter.
顺便说一下,另一种方法是使用合成的getter/setter并添加一个-(BOOL)isNumberOfSidesValid
执行此检查的单独方法.
归档时间: |
|
查看次数: |
9611 次 |
最近记录: |