我正在尝试使用 Objective-C++ 将 NSArray 的内容复制到使用自动引用计数的项目中的 std::vector 中。
当我写这个时:
NSArray* array;
...
std::vector<id> buffer;
buffer.reserve(array.count);
[array getObjects:&buffer[0] range:NSMakeRange(0, array.count)];
调用getObjects:range:
导致此错误:
Cannot initialize a parameter of type '__unsafe_unretained id *
'rvalue
类型为'__strong id *
'
网上的一些搜索表明可能需要__bridge
演员表。使用此代码:
[array getObjects:(__bridge id*)&buffer[0] range:NSMakeRange(0, array.count)];
导致此错误:
Incompatible types casting '__strong id *' to '__strong id *' with a __bridge cast
需要什么才能将数组对象复制到向量中?