我正在尝试使用CFDictionary实现[NSMutableDictionary dictionaryWithObjects:frames forKeys:items],因此我可以控制键和值回调。这就是我得到的:

__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);

出现以下错误:Cast of an indirect pointer to an Objective-C pointer to 'const void **' is disallowed with ARC

我已经尝试了各种桥接方法,但是似乎没有抱怨就无法编译它。

任何帮助,不胜感激!

最佳答案

我也无法为此找到语法。 (编辑:贾斯汀的答案具有语法。)请尝试以下操作:

void *keys[itemCount];
[items getObjects:(__unsafe_unretained id *)(void *)keys range:NSMakeRange(0, itemCount)];

这样,当您调用CFDictionaryCreate时就不需要强制转换。

09-25 16:16