Я разрабатываю iOS с OpenCV. 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.
У вас есть идея конвертировать все?
Я попытался преобразовать каждое свойство. Это хорошо работало для некоторых свойств, а для других это не сработало.
Надеюсь, ты поможешь мне.
Спасибо.
Приветствую,
Александр Генрих
Вы можете писать байты из объектов внутри данных, но не хранить объект. Например, объект может иметь указатели на других объектах, и через некоторое время они могут стать недействительными, но ваша NSData-копия не узнает об этом.
Вы должны включить Objective- C++ и работать напрямую с структурами/классами C++.