Iphone 添加c++;NSMutableArray中的对象 我已在使用用户C++类;new_meetingUser是它的目标
我想将它添加到NSMutableArray meetingUsersList中,这是我使用NSValue完成的。但是,我不知道如何处理对象的内存和NSMutableArray的所有权Iphone 添加c++;NSMutableArray中的对象 我已在使用用户C++类;new_meetingUser是它的目标,iphone,objective-c,ios,Iphone,Objective C,Ios,我想将它添加到NSMutableArray meetingUsersList中,这是我使用NSValue完成的。但是,我不知道如何处理对象的内存和NSMutableArray的所有权 MeetingUser *new_meetingUser = new MeetingUser(userName, dispName ); [meetingUsersList addObject:[NSValue valueWithPointer:new_meetingUser]]; 可以将C++对象添加到数组中,
MeetingUser *new_meetingUser = new MeetingUser(userName, dispName );
[meetingUsersList addObject:[NSValue valueWithPointer:new_meetingUser]];
可以将C++对象添加到数组中,但是数组不会占用对象的所有权。您必须确保对象在数组中时未被删除,否则它将成为悬空指针。然后,当您知道这样做是安全的时,您必须稍后手动删除该对象
如果希望数组拥有对象的所有权,则必须使用
CFMutableArray
CFMutableArray
允许您指定从数组中删除对象或取消分配数组时调用的函数。在您的情况下,您希望将CFMutableArray
设置为调用对象上的delete
。基本上,您不能。C++对象和ObjtoVc对象是完全不同的事物,尽管两者都被称为“对象”。它不能保存基元、结构体、C++对象或任何不是Objto-C对象的其他对象。最好的解决方法是创建一个ObjtoE-C类,它封装了C++类并将其存储在数组中。 < P>一种方法是编写一个小Objc类来包装C++对象。这可以是简单的或复杂的,因为它需要做的唯一的事情就是把C++对象存储在一个字段中,并且<代码>删除<代码>它在<代码> DELOLC/delete
不是函数,因此您必须编写一个小比特回调函数来包装它。是的。如果你想把C++对象引用成一个普通的< <代码> NSObjs< /C> >,你可能需要编写一个包装类:<代码>删除< /Cord> s,在代码< DELOLC/<代码>中,然后将包装对象添加到<代码> NSMutableArray < /C> >。它实际上只持有一个指针。