Objective-C で OpenCV 静的ライブラリを使用して画像処理を行っています。アプリは非常にうまく機能していますが、デバイス自体ではかなり遅いです。処理の大部分は実際には事前に行うことができるため、このデータをシリアル化し、代わりにアプリの起動時にそれをロードすることにしました。
シリアル化/アーカイブする必要があるデータは、タイプ 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 インスタンス変数で同じことを達成できるようにするには、別のルートを取る必要がありますか?