我在可可库中有这个代码:
-(NSPointerArray *) GetRequestsFromCalendar:(int) calid
{
NSPointerArray * reqs=[[NSPointerArray alloc] initWithOptions:NSPointerFunctionsOpaqueMemory];
for(int i=0;i<5; ++i){
Request * newreq=new Request();
[reqs addPointer:newreq];
}
for (NSUInteger i=0;i<5;++i) {
void * ptr=[reqs pointerAtIndex:i];
std::cout<<*((Request *) ptr)<<std::endl;
}
这里我预计会打印出值 &#34; Request1&#34; &#34; Request1&#34; &#34; Request1&#34; &#34; Request1&#34; &#34; Request1&#34;
return reqs;
}
当我从其他可可库中调用此函数,并访问NSPointerArray时,
NSPointerArray * array=[obj GetRequestsFromCalendar:1]
for (NSUInteger i=0; i<[array count]; ++i) {
void * ptr=[array pointerAtIndex:i];
std::cout<<*((Request *) ptr)<<std::endl;
}
打印非预期值,如 ???? AOD)@&#34;??? ....
Request是一个c ++类,重载了std :: ostream&amp;运算符&lt;&lt;私有成员std :: string name初始化为&#34; Request1&#34;
两个库都使用自动引用计数
调用函数后指针似乎是免费的,但我不确定。 有人可以帮忙吗?