我正在尝试CFSetGetValues()
在一个NSSet
实例上使用,但它似乎正在破坏集合的内存。使用观察点,正在将集合实例写入 from objc_assign_strongCast_non_gc()
。现在,我不知道发生了什么。
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSSet *set = [NSSet setWithObjects:@1, @2, @3, nil];
const void *objects = calloc(set.count, sizeof(id));
CFSetGetValues((__bridge CFSetRef)set, &objects);
NSLog(@"Set %@", set); // *** set has been clobbered ***
}
return 0;
}
这是在 64 位 OS X 10.8 上。在 iOS 模拟器中运行相同的代码时会失败。