1
我想要Objective-C++將NSArray的內容複製到使用自動引用計數的項目中的std :: vector中。
當我寫這篇文章:不能使用ARC將NSArray複製到std :: vector使用ARC
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 *
「與'__strong id *
類型的rvalue
」
在網絡上一些網站的搜索表明,也許是__bridge
需要施放。使用此代碼:
[array getObjects:(__bridge id*)&buffer[0] range:NSMakeRange(0, array.count)];
結果在此錯誤:
Incompatible types casting '__strong id *' to '__strong id *' with a __bridge cast
是需要該陣列的對象可以被拷貝到載體中什麼?
它看起來像我已經解決了它。下面是我做的代碼編譯成功: \t __unsafe_unretained id * data = reinterpret_cast <__ unsafe_unretained id *>(&buffer [0]); \t \t [self getObjects:data range:NSMakeRange(0,self.count)]; –