自動参照カウントを使用しているプロジェクトで、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 rvalue
of 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
配列オブジェクトをベクターにコピーするには何が必要ですか?