我正在构建一个类,它将存储一组标志,特别是一年中每个月一个是/否标志。我希望标志存储是私有的,在类构造中初始化为“无”状态,并带有设置和获取标志的方法。
什么是最干净的Objective C / Cocoa方式来做到这一点?
我正在构建一个类,它将存储一组标志,特别是一年中每个月一个是/否标志。我希望标志存储是私有的,在类构造中初始化为“无”状态,并带有设置和获取标志的方法。
什么是最干净的Objective C / Cocoa方式来做到这一点?
@implementation AClass
{
bool monthFlags[12]; // automatically initialised to all false on creation
}
-(void) setFlagValue: (bool) newValue forMonth: (size_t) aMonth
{
if (aMonth < 12)
{
monthFlags[aMonth] = newValue;
}
else
{
// exception probably
}
}
-(bool) flagValueForMonth: (size_t) aMonth
{
if (aMonth < 12)
{
return monthFlags[aMonth];
}
else
{
// exception probably
}
}
最干净的方法似乎是使用 c array 。创建一个属性并将所有值设置为 0。您只需一步即可完成。array[12] = {0}
. 然后您可以从索引中获取设置值并将它们用作布尔值。由于 BOOL 代表 0/1,因此您不需要任何转换。
@interface MyArray:NSObject
@end
@implementation{
NSArray *array;
}
-(id) init{
if(self = [super init]){
array = [NSMutableArray array];
for(int i=0; i<12; i++){
array[i] = [NSNumber numberWithBool:NO];
}
}
return self;
}
-(void) setFlag:(BOOL)b forMonth:(int)idx{
if(idx>=12 || idx<0) return;
array[idx] = [NSNumber numberWithBool:b];
}
-(BOOL) flagForMonth:(int)idx{
if(idx>=12 || idx<0) return NO;
return [array[idx] boolValue];
}
@end