CFMutableBitVector :: CFBitVectorSetAllBits似乎不起作用

时间:2015-03-24 10:03:10

标签: objective-c bit-manipulation core-foundation

我使用CFMutableBitVector来管理位集合,但CFBitVectorSetAllBits API似乎没有按预期工作。要说明问题,请考虑示例代码:

vector = CFBitVectorCreateMutable(kCFAllocatorDefault, 32);

printf("Setting all bits to 1\n");
CFBitVectorSetAllBits(vector, 1);

printf("Checking whether bit 0 is set... ");
isSet = CFBitVectorGetBitAtIndex(vector, 0);
if (isSet)
    printf("It is\n");
else
    printf("It is not\n");

我得到的输出是:

Setting all bits to 1
Checking whether bit 0 is set... It is not

如果我使用CFBitVectorSetBitAtIndex,可以设置或清除各个位。我在这里错过了什么吗?任何指针都将不胜感激!

1 个答案:

答案 0 :(得分:1)

CFBitVectorCreateMutable函数创建向量,第二个参数指定向量的容量,即可以存储在其中的最大位数,但实际上不向向量添加任何位。您可以使用CFBitVectorSetCount函数向矢量添加值:

CFMutableBitVectorRef v = CFBitVectorCreateMutable(kCFAllocatorDefault, 32);
CFBitVectorSetCount(v, 32); 
CFBitVectorSetAllBits(v, 1);