Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ NSMutableArray insertObject:(id)atIndex:int插入一个空ptr_C++_Cocoa_Nsmutablearray_Objective C++ - Fatal编程技术网

C++ NSMutableArray insertObject:(id)atIndex:int插入一个空ptr

C++ NSMutableArray insertObject:(id)atIndex:int插入一个空ptr,c++,cocoa,nsmutablearray,objective-c++,C++,Cocoa,Nsmutablearray,Objective C++,在我的应用程序中,我有C++和ObjultC++代码的混合,在一个地方,我需要把C++类指针的指针插入NSMutableArray,但是我得到NSUpLIDIDENT异常, 谁能指导我,我如何插入指向NSMuatableArray的无效指针 这就是我尝试过的 pArray = [[NSMutableArray alloc]initWithCapacity:myList.size()]; Node *node = myList.getHead(); int idx =0; void *ptr

在我的应用程序中,我有C++和ObjultC++代码的混合,在一个地方,我需要把C++类指针的指针插入NSMutableArray,但是我得到NSUpLIDIDENT异常, 谁能指导我,我如何插入指向NSMuatableArray的无效指针

这就是我尝试过的

pArray = [[NSMutableArray alloc]initWithCapacity:myList.size()];

Node *node = myList.getHead();

int idx =0;
void *ptr = nil;
while ( node ) {
    [pCTArray insertObject:(NSObject *)node atIndex:idx];
    node = node->getNext();
    idx++;

}
是否有其他方法将其插入可变数组, 我可能的解决方法是:让存储索引链接

[myArray insertObject:[NSNumber numberWithInt:idx] atIndex:idx];
我将在所有NSTable/NSOutlineView委托方法中使用这个数组,我需要选择索引并从链接列表中获取元素,但出于性能考虑,需要太多的函数调用


这是可可里的虫子还是我做错了什么

NSarray希望保存符合
NSObject
协议的objective-C对象。如果要包装指针,请使用NSValue:

[myArray insertObject:[NSValue valueWithPointer:node] atIndex:idx];

您手动负责该指针的所有内存管理,因为objective-C不能以通常的方式对其进行引用计数

NSMurableArray
只接受Objective-C对象(因此
addObject:
的参数类型为
id

你用的是Mac还是iOS?如果您在Mac上,可能需要查看
nspointerray


你也可以用自定义回调函数来编写<代码> CFMutableArray >代码,但是我自己没有尝试过。< /P> < P>第三个选项是<代码> NSPointerArray < /C> >。/P>这对我来说不象C++。@ John是Objul-C++,C++有Objul-C的所有特性,反之亦然。我从来没有使用过NSPointerArray。但它看起来确实很适合解决这个问题。内存管理助手函数可能会很有用,我认为NSValue没有同等的功能。另外,我认为从“NSTable/NSOutlineView”中假设Mac是安全的是的,它应该点击,不是吗?我查找了Mac或iPhone标记,但没有找到。您好,我尝试了NSPointerArray,下面是我的代码片段\n pCTArray=[[NSPointerArray alloc]initWithOptions:NSPointerFunctionsObjectPersonality];然后设置大小[pCTArray setCount:10];之后,尝试在while循环中插入10个对象,但我总是收到EXEC\u BAD\u信号,我是否遗漏了什么