在NSData中存储c ++结构/对象

时间:2014-01-21 19:07:54

标签: c++ objective-c opencv nsdata mat

我正在使用OpenCV开发iOS。 OpenCV是一个开源图像库,可以与C ++一起使用。

我想将库中的一些数据存储在NSData对象中。 是否可以将c ++结构转换为NSData而不会丢失对象?

- (void)addMat:(cv::Mat)mat andImageName:(NSString *)name {


self.myMat = [NSData dataWithBytes:&mat length:sizeof(mat)];
self.imageName = name;

}

现在我正在使用上面的代码。 但是这个NSData只存储指针而不是实际数据。 当我试图让对象回来时我

  

释放的指针未分配    * 在malloc_error_break中设置断点以进行调试

我的数据应存储在SqLite数据库中。

你有想法转换一切吗?

我试图转换每一个属性。这对一些房产非常有效,而对其他房产则不起作用。

我希望你能帮助我。

谢谢。

问候,

Alexander Heinrich

1 个答案:

答案 0 :(得分:1)

您可以从数据内的对象写入字节,但不存储对象。例如,对象可以在其他对象上有指针,并且在一段时间后它们可能变得无效,但是你的NSData副本将不知道这一点。

您应该启用Objective-C ++并直接使用C ++结构/类。