次の方法で共有


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