2017-04-26 8 views
1

私は私のプロジェクトでいるProtobuf 2を使用しています。実行時にメッセージを作成するのにDynamicMessageFactoryを使いたいです。 DynamicMessageFactoryDescriptor*必要です。私は生成されたクラスの変更可能なメッセージのDescriptor*を渡しています。ドキュメントはDescriptorが順番に工場で生成されたメッセージをより長生きする必要がありDynamicMessageFactoryよりも長生きしなければならないと述べています。生成されたprotobufメッセージの記述子の存続期間はどのくらいですか?

生成されたクラスの記述子の寿命は何ですか?それはクラスの静的メンバーですか?

答えて

2

生成コード/コンパイル・イン・メッセージ・クラスの記述子は永遠に生きるので、良いものにする必要があります。

しかし、あなたのタイプは遵守インしている場合は、DynamicMessageFactoryを使用する理由はありません。動的メッセージは生成されたコードよりもはるかに遅く、生成されたコードは生成されたインタフェースに加えてダイナミックインタフェース全体をサポートします。代わりにthe generated factoryを使用して、生成されたメッセージのインスタンスを取得できます。または、でもクリーンな戦略はMyType::default_instance()を呼び出すことにより、メッセージのプロトタイプを取得し、その後、むしろ記述子の周りに渡すよりも、そのポインタの周囲を通過することです。

いくつかの生成された型といくつかの動的型を混在させる必要がある場合は、DynamicMessageFactory::SetDelegateToGeneratedFactory()の使用を検討してください。

関連する問題