自動参照カウントを使用しているプロジェクトで、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 *' with an rvalueof type '__strong id *'
Web で検索したところ、おそらく__bridgeキャストが必要であることがわかりました。このコードの使用:
[array getObjects:(__bridge id*)&buffer[0] range:NSMakeRange(0, array.count)];
次のエラーが発生します。
Incompatible types casting '__strong id *' to '__strong id *' with a __bridge cast
配列オブジェクトをベクターにコピーするには何が必要ですか?