0

我正在构建一个类,它将存储一组标志,特别是一年中每个月一个是/否标志。我希望标志存储是私有的,在类构造中初始化为“无”状态,并带有设置和获取标志的方法。

什么是最干净的Objective C / Cocoa方式来做到这一点?

4

3 回答 3

1
@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
    }
}
于 2013-07-26T12:08:29.470 回答
0

最干净的方法似乎是使用 c array 。创建一个属性并将所有值设置为 0。您只需一步即可完成。array[12] = {0}. 然后您可以从索引中获取设置值并将它们用作布尔值。由于 BOOL 代表 0/1,因此您不需要任何转换。

于 2013-07-26T12:10:17.290 回答
-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
于 2013-07-26T11:48:53.117 回答