Я использую статическую библиотеку OpenCV в Objective-C для некоторой обработки изображений, и хотя мое приложение работает довольно хорошо, на самом устройстве оно довольно медленное. Большая часть обработки может быть выполнена заранее, поэтому я решил, что я сериализирую эти данные и просто загружу их при запуске приложения.
Данные, которые мне нужно сериализовать / архивировать, находятся в объекте типа CvSeq (последовательность openCV - указатель на последовательность значений). Я в основном хочу сохранить это в файл, чтобы он мог быть загружен позже. Я думал, что смогу сделать это, создав класс, который будет придерживаться протокола NSCoding и оттуда кодировать / декодировать:
@implementation MyObject
@synthesize point = _point;
@synthesize description = _description;
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.point = [decoder decodeObjectForKey:@"point"];
self.description = [decoder decodeObjectForKey:@"description"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:self.point forKey:@"point"];
[encoder encodeObject:self.description forKey:@"description"];
}
@end
Но на decodeObjectForKey: и encodeObject: вызывает я получаю ошибку
error: cannot convert 'objc_object*' to 'CvSeq*' in argument passing
Есть ли проблема с моим кодом, или мне нужно выбрать другой маршрут, чтобы добиться того же самого с переменными экземпляра нецелевого C, находящимися в моих объектах?