Поделиться через


Целевые атрибуты Sharpie

Часто вы найдете, что привязки, созданные Objective Sharpie, будут аннотированы атрибутом [Verify] . Эти атрибуты указывают на то, что вы должны убедиться , что Objective Sharpie сделал правильное действие, сравнивая привязку с исходным объявлением C/Objective-C (которое будет предоставлено в комментарии выше ограничивающего объявления).

Проверка рекомендуется для всех ограничивающих объявлений, но, скорее всего, требуется для объявлений, аннотированных атрибутом[Verify]. Это связано с тем, что во многих ситуациях в исходном исходном коде недостаточно метаданных, чтобы определить, как лучше всего создать привязку. Возможно, вам потребуется ссылаться на документацию или комментарии кода в файлах заголовков, чтобы принять оптимальное решение о привязке.

Убедившись, что привязка правильна или исправлена, [Verify] удалите атрибут из привязки.

Внимание

[Verify] атрибуты намеренно вызывают ошибки компиляции C#, чтобы принудительно проверить привязку. При проверке (и возможно исправлении) кода необходимо удалить [Verify] атрибут.

Справка по подсказкам

Аргумент указания, предоставленный атрибуту, можно перекрестно ссылаться на документацию ниже. Документация по любым созданным [Verify] атрибутам будет предоставлена в консоли, а также после завершения привязки.

[Verify] Подсказка Description
InferredFromPreceedingTypedef Имя этого объявления было выведено общим соглашением из непосредственно предыдущего typedef в исходном исходном коде. Убедитесь, что указанное имя правильно, так как это соглашение неоднозначно.
ConstantsInterfaceAssociation Нет способа обмана определить, с каким Objective-C интерфейсом может быть связано объявление экстерна переменной. Экземпляры этих элементов привязаны как [Field] свойства в частичном интерфейсе к конкретному интерфейсу для создания более интуитивно понятного API, возможно, полностью устраняя интерфейс "Константы".
MethodToProperty Метод Objective-C был привязан как свойство C# из-за соглашения, например принятия параметров и возврата значения (непустый возврат). Часто такие методы должны быть привязаны как свойства к поверхности более удобного API, но иногда могут возникать ложные срабатывания, и привязка должна быть фактически методом.
StronglyTypedNSArray Родной NSArray* был привязан как NSObject[]. Можно было бы более строго ввести массив в привязке на основе ожиданий, заданных с помощью документации ПО API (например, примечания в файле заголовка) или путем изучения содержимого массива с помощью тестирования. Например, объект NSArray* со только экземпляром NSNumber* должен быть привязан NSNumber[] вместо NSObject[]него.

Вы также можете быстро получить документацию по подсказке sharpie verify-docs с помощью средства, например:

sharpie verify-docs InferredFromPreceedingTypedef