c++ - 我可以添加自己的类型转换运算符以将 C++ 对象转换为 Objective-C 吗?

标签 c++ objective-c

我有 C++ 整数 vector ,我需要将其转换为 Objective-C NSArray。一种方法是遍历所有元素,获取每个 int 并复制到 NSArray,这可以通过一个函数来完成,但是有没有办法为 NSArray 编写一个运算符/构造函数,它接受 std::vector 作为参数并且创建一个数组,换句话说,我可以扩展 NSArray 类吗?

最佳答案

你可以像这样在 NSArray 上做一个类别:

NSArray+vector.h:

#include <vector>

@interface NSArray (vector)

-(id)initWithVector:(std::vector<int>)v1;

@end

NSArray+vector.m:

#import "NSArray+vector.h"

@implementation NSArray (vector)

-(id)initWithVector:(std::vector<int>)v1{
    NSMutableArray *array = [[NSMutableArray alloc] init];
    for(int i =0; i < v1.size(); i++){
        [array addObject:[NSNumber numberWithInt:v1.at(i)]];
    }
    return [array copy];
}

@end

我没有调试它,但它应该可以工作。

关于c++ - 我可以添加自己的类型转换运算符以将 C++ 对象转换为 Objective-C 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31316761/

相关文章:

c++ - 从模板化类虚函数中调用的模板函数不正确

c++ - 为什么多重继承具有不同签名的方法不明确?

c++ - 将外部库中的定义隐藏到我的代码中

objective-c - ios:通过仅进行一次替换来替换文件中多个字符串的最佳方法是什么?

iphone - 来自 NSUserDefaults 的对象正在释放?

c# - 如何从 sourcecode.c 创建 DLL 库,然后在 C# 中使用它

c++ - C++ 中的类开销

ios - 自定义类型右栏按钮项之间的间距

iphone - 在 Xcode 中将图像加载到 UIWebView

ios - 如何从一个 View 移动到另一个 View