我正在尝试实现 [NSMutableDictionary dictionaryWithObjects:frames forKeys:items]
但是使用 CFDictionary 所以我可以控制键和值回调。这是我得到的:
__unsafe_unretained id keys[itemCount];
[items getObjects:keys range:NSMakeRange(0, itemCount)];
__unsafe_unretained id values[itemCount];
[frames getObjects:values range:NSMakeRange(0, itemCount)];
CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, (const void **)values, itemCount, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
这会产生以下错误:ARC 不允许将指向“const void **”的 Objective-C 指针的间接指针强制转换
。
我已经尝试了各种桥接排列,但我似乎无法毫无怨言地编译它。
非常感谢任何帮助!
最佳答案
我也找不到相应的语法。 (编辑:贾斯汀的回答有语法。)试试这个:
void *keys[itemCount];
[items getObjects:(__unsafe_unretained id *)(void *)keys range:NSMakeRange(0, itemCount)];
那么在调用 CFDictionaryCreate
时就不需要强制转换了。
关于objective-c - 将 '__unsafe_unretained id *' 转换为 'const void **',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273833/