Objective Sharpie の Verify 属性
多くの場合、Objective Sharpie によって生成されるバインドには、[Verify]
属性の注釈が付けられます。 これらの属性は、バインドと元の C/Objective-C 宣言 (バインドされた宣言の上のコメントで指定されます) を比較することで、Objective Sharpie が正しい処理を実行したことを "検証" する必要があることを示します。
検証は "すべて" のバインドされた宣言に対して推奨されますが、[Verify]
属性の注釈が付けられた宣言に対して "必要になる" 可能性が最も高くなります。 これは、多くの場合に、バインドを最適に生成する方法を推測するのに十分なメタデータが元のネイティブ ソース コードにないためです。 最適なバインドの決定を行うには、ヘッダー ファイル内のドキュメントやコード コメントを参照する必要がある場合があります。
バインドが正しいことを確認するか、適切になるように修正したら、バインドから [Verify]
属性を "削除" します。
重要
[Verify]
属性によって意図的に C# コンパイル エラーが発生するため、バインドを検証することが強制されます。 [Verify]
属性は、コードを確認 (および、おそらく修正) したときに削除する必要があります。
Verify ヒントの参照
属性に指定されたヒント引数は、以下のドキュメントと相互参照できます。 生成された [Verify]
属性のドキュメントは、バインドが完了した後もコンソールで提供されます。
[Verify] のヒント |
説明 |
---|---|
InferredFromPreceedingTypedef | この宣言の名前は、元のネイティブ ソース コード内の直前の typedef の共通規則によって推論されたものです。 この規則はあいまいであるため、推論された名前が正しいことを確認します。 |
ConstantsInterfaceAssociation | extern 変数宣言が関連付けられている可能性のある Objective-C インターフェイスを判断する確実な方法はありません。 これらのインスタンスは、部分インターフェイスの [Field] プロパティとして近接する具象インターフェイスにバインドされ、より直感的な API を生成し、"Constants" インターフェイスを完全に排除する可能性があります。 |
MethodToProperty | パラメータを取らず値を返す (void 以外の戻り値) といった規則により、Objective-C メソッドが C# プロパティとしてバインドされました。 多くの場合、このようなメソッドは、より良い API を示すためにプロパティとしてバインドする必要がありますが、場合によっては誤検知が発生する可能性があるため、バインドは実際にはメソッドである必要があります。 |
StronglyTypedNSArray | ネイティブ NSArray* が NSObject[] としてバインドされました。 API ドキュメント (ヘッダー ファイル内のコメントなど) で設定された期待値に基づいて、またはテストを通じて配列の内容を調べることによって、バインドで配列をより厳密に型指定できる場合があります。 たとえば、NSNumber* インスタンスのみを含む NSArray* は、NSObject[] ではなく NSNumber[] としてバインドできます。 |
また、次のような sharpie verify-docs
ツールを使用すれば、ヒントのドキュメントをすばやく受け取ることができます。
sharpie verify-docs InferredFromPreceedingTypedef