Condividi tramite


Attributi di verifica di Objective Sharpie

Spesso si scopre che i binding prodotti da Objective Sharpie verranno annotati con l'attributo [Verify] . Questi attributi indicano che è necessario verificare che Objective Sharpie abbia fatto la cosa corretta confrontando l'associazione con la dichiarazione C/Objective-C originale (che verrà fornita in un commento sopra la dichiarazione associata).

La verifica è consigliata per tutte le dichiarazioni associate, ma è molto probabile che sia necessaria per le dichiarazioni annotate con l'attributo [Verify] . Ciò è dovuto al fatto che in molte situazioni non sono presenti metadati sufficienti nel codice sorgente nativo originale per dedurre come produrre al meglio un'associazione. Potrebbe essere necessario fare riferimento alla documentazione o ai commenti di codice all'interno dei file di intestazione per prendere una decisione di associazione ottimale.

Dopo aver verificato che l'associazione sia corretta o che sia stata corretta, rimuovere l'attributo dall'associazione [Verify] .

Importante

[Verify] gli attributi causano intenzionalmente errori di compilazione C# in modo da essere costretti a verificare l'associazione. È consigliabile rimuovere l'attributo [Verify] quando è stato esaminato (ed eventualmente corretto) il codice.

Verificare i riferimenti agli hint

L'argomento hint fornito all'attributo può essere associato a riferimenti incrociati con la documentazione seguente. La documentazione per gli attributi prodotti [Verify] verrà fornita anche nella console dopo il completamento dell'associazione.

[Verify] Suggerimento Descrizione
InferredFromPreceedingTypedef Il nome di questa dichiarazione è stato dedotto dalla convenzione comune dall'oggetto immediatamente precedente typedef nel codice sorgente nativo originale. Verificare che il nome dedotto sia corretto perché questa convenzione è ambigua.
ConstantsInterfaceAssociation Non è possibile determinare con quale Objective-C interfaccia può essere associata una dichiarazione di variabile extern. Le istanze di queste sono associate come [Field] proprietà in un'interfaccia parziale in un'interfaccia quasi concreta per produrre un'API più intuitiva, eliminando eventualmente l'interfaccia "Costanti".
MethodToProperty Un Objective-C metodo è stato associato come proprietà C# a causa di convenzioni come l'assenza di parametri e la restituzione di un valore (restituzione non void). Spesso i metodi come questi devono essere associati come proprietà per visualizzare un'API più bella, ma a volte possono verificarsi falsi positivi e l'associazione deve effettivamente essere un metodo.
FortementeTypedNSArray Un oggetto nativo NSArray* è stato associato come NSObject[]. Potrebbe essere possibile digitare più fortemente la matrice nell'associazione in base alle aspettative impostate tramite la documentazione dell'API (ad esempio, i commenti nel file di intestazione) o esaminando il contenuto della matrice tramite test. Ad esempio, un oggetto NSArray* contenente solo l'istanza NSNumber* deve essere associato come NSNumber[] anziché NSObject[].

È anche possibile ricevere rapidamente la documentazione per un suggerimento usando lo sharpie verify-docs strumento, ad esempio:

sharpie verify-docs InferredFromPreceedingTypedef