繁体   English   中英

如何在C ++中使用自定义的Objective-C对象?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM