【问题标题】:Storing c++ structs/objects in NSData在 NSData 中存储 c++ 结构/对象
【发布时间】:2014-01-21 19:07:54
【问题描述】:

我正在使用 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 中设置断点进行调试

我的数据应该存储在 SqlLite 数据库中。

你有什么想法来转换一切吗?

我尝试转换每个属性。这对某些属性非常有效,而对于其他属性则不起作用。

我希望你能帮助我。

谢谢。

你好,

亚历山大·海因里希

【问题讨论】:

  • 看起来不错,您如何尝试恢复结构?
  • cv::垫子; [self.myMat getBytes:&mat 长度:sizeof(mat)];返回垫子;正如 Cy-4Ah 所说,指针会丢失。

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


【解决方案1】:

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

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

【讨论】:

  • 我正在使用 Objective C++ 是否可以以其他方式存储 C++ 结构?不丢失指针
  • @Sn0wfreeze,为什么以及在哪里需要存储对象?为什么不能只使用 OpenCV 中的类型?
猜你喜欢
  • 2011-09-27
  • 2020-07-14
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 2017-10-25
  • 2018-06-15
  • 2011-05-03
相关资源
最近更新 更多