![](/img/trans.png)
[英]How can I use my custom types (C++) in an objective-c project with xcode?
[英]How to use custom Objective-C object in C++?
我正在实现一些快速排序算法,并且为了获得最佳性能,我想在Objective-C中使用C ++绑定。 但是我希望我的算法能够与用户自定义对象以及与NSComparator类似的东西一起使用; 我可以在C ++中使用哪种类型来使用这些对象? 我可以为课程模板吗?
请让我知道您在C ++中绑定自定义对象并在C ++中使用NSComparator的最佳解决方案吗?
最好的祝福,
HervéHL。
借助@Dave,我终于找到了从NSArray提取指针的解决方案,无论所包含的类型如何,都可以执行一些复杂的操作,然后使用void * type重新组装指针。
只需将.m文件重命名为.mm即可启用Objective-C ++功能。
void *array[[self count]]; //create an empty void* array
for (uint i = 0; i < [self count]; i++)
{
int address = (int)[self objectAtIndex:i];
array[i] = (void *)address; //insert NSObjects pointers into void* array
}
要从void *数组中获取NSObject,请按照以下步骤操作:
NSMutableArray *doneAr = [[NSMutableArray alloc] init]; //create a NSMutableArray
for (uint i = 0; i < [self count]; i++)
{
void *tmp = (void **)done + i; //extract the pointer in the void* array
NSString *strTmp = (NSString *)(*((Class *)tmp)); //convert it back to origin type (here NSString *)
[doneAr addObject:strTmp]; //add it back to the previously created NSMutableArray
}
希望这个答案对将来的问题有所帮助。 如果您希望在C ++实现中使用像我这样的NSComparator,只需将.m文件重命名为.mm文件,以便可以使用Objective-C ++功能; 然后导入并使用所需的内容(例如NSComparator)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.