我使用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,可以设置或清除各个位。我在这里错过了什么吗?任何指针都将不胜感激!
答案 0 :(得分:1)
CFBitVectorCreateMutable函数创建空向量,第二个参数指定向量的容量,即可以存储在其中的最大位数,但实际上不向向量添加任何位。您可以使用CFBitVectorSetCount函数向矢量添加值:
CFMutableBitVectorRef v = CFBitVectorCreateMutable(kCFAllocatorDefault, 32);
CFBitVectorSetCount(v, 32);
CFBitVectorSetAllBits(v, 1);