NSPointerArray访问指针失败

时间:2013-08-28 09:37:20

标签: objective-c automatic-ref-counting

我在可可库中有这个代码:

-(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;

两个库都使用自动引用计数

调用函数后指针似乎是免费的,但我不确定。 有人可以帮忙吗?

0 个答案:

没有答案