Objective Sharpie Verify 属性

你经常会发现 Objective Sharpie 生成的绑定会使用 [Verify] 属性进行批注。 这些属性表明你应该通过将绑定与原始 C/Objective-C 声明(将在绑定声明上方的注释中提供)进行比较来验证 Objective Sharpie 是否执行了正确的操作。

建议对所有绑定声明进行验证,但对于使用 [Verify] 属性进行批注的声明,则很可能必须对其进行验证。 这是因为在许多情况下,原始本机源代码中没有足够的元数据来推断如何最好地生成绑定。 你可能需要参考头文件内的文档或代码注释来做出最佳的绑定决定。

验证绑定正确或将其修正为正确的绑定后,请从绑定中删除[Verify] 属性。

重要

[Verify] 属性会故意导致 C# 编译错误,使你被迫验证绑定。 查看代码(并尽可能对其进行更正)后,应该删除 [Verify] 属性。

Verify 提示引用

提供给属性的提示参数可以与下面的文档交叉引用。 绑定完成后,控制台上也会提供任何生成的 [Verify] 属性的文档。

[Verify] 提示 说明
InferredFromPreceedingTypedef 此声明的名称是根据原始本机源代码中紧邻的前面的 typedef 中的通用约定推断出来的。 请验证推断的名称是否正确,因为此约定不明确。
ConstantsInterfaceAssociation 没有万无一失的方法来确定外部变量声明可能与哪个 Objective-C 接口关联。 这些项的实例作为部分接口中的 [Field] 属性绑定到附近的具体接口中,以生成更直观的 API,可能会完全消除“常量”接口。
MethodToProperty 由于存在约定(例如在不采用参数的情况下返回一个值(非 void 返回)),Objective-C 方法被绑定为 C# 属性。 通常情况下,此类方法应作为属性绑定,以呈现更好的 API,但有时可能会出现误报,绑定实际上应该是一种方法。
StronglyTypedNSArray 本机 NSArray* 已绑定为 NSObject[]。 可以根据通过 API 文档设置的期望(例如头文件中的注释)在绑定中对数组进行进一步的强类型化,也可以通过使用测试检查数组内容来这样做。 例如,仅包含 NSNumber* 实例的 NSArray* 可以绑定为 NSNumber[] 而不是 NSObject[]

还可以使用 sharpie verify-docs 工具快速接收提示文档,例如:

sharpie verify-docs InferredFromPreceedingTypedef