API macOS per sviluppatori Xamarin.Mac
Panoramica
Per gran parte del tempo che si sviluppa con Xamarin.Mac, è possibile pensare, leggere e scrivere in C# senza preoccuparsi delle API sottostanti Objective-C . Tuttavia, a volte è necessario leggere la documentazione dell'API da Apple, tradurre una risposta da Stack Overflow in una soluzione per il problema o confrontare con un esempio esistente.
Leggere abbastanza Objective-C per essere pericoloso
A volte sarà necessario leggere una definizione o una Objective-C chiamata al metodo e convertirla nel metodo C# equivalente. Si esaminerà ora una Objective-C definizione di funzione e si suddivideno le parti. Questo metodo (un selettore in ) è reperibile in Objective-CNSTableView
:
- (BOOL)canDragRowsWithIndexes:(NSIndexSet *)rowIndexes atPoint:(NSPoint)mouseDownPoint
La dichiarazione può essere letta da sinistra a destra:
- Il
-
prefisso indica che è un metodo di istanza (non statico). + significa che è un metodo di classe (statico) (BOOL)
è il tipo restituito (bool in C#)canDragRowsWithIndexes
è la prima parte del nome.(NSIndexSet *)rowIndexes
è il primo parametro e con il tipo. Il primo parametro è nel formato:(Type) paramName
atPoint:(NSPoint)mouseDownPoint
è il secondo parametro e il relativo tipo. Ogni parametro dopo il primo è il formato:selectorPart:(Type) paramName
- Il nome completo del selettore di messaggi è:
canDragRowsWithIndexes:atPoint:
. Si noti che alla:
fine è importante. - L'associazione effettiva di Xamarin.Mac C# è:
bool CanDragRows (NSIndexSet rowIndexes, PointF mouseDownPoint)
Questa chiamata del selettore può essere letta nello stesso modo:
[v canDragRowsWithIndexes:set atPoint:point];
- L'istanza
v
ha il selettorecanDragRowsWithIndexes:atPoint
chiamato con due parametri eset
point
, passato. - In C# la chiamata al metodo è simile alla seguente:
v.CanDragRows (set, point);
Ricerca del membro C# per un selettore specificato
Dopo aver trovato il Objective-C selettore da richiamare, il passaggio successivo consiste nel mapping al membro C# equivalente. Esistono quattro approcci che è possibile provare (continuando con l'esempio NSTableView CanDragRows
):
Usare l'elenco di completamento automatico per cercare rapidamente qualcosa dello stesso nome. Poiché si sa che si tratta di un'istanza di
NSTableView
è possibile digitare:NSTableView x;
x.
[CTRL+SPAZIO se l'elenco non viene visualizzato).CanDrag
[invio]- Fare clic con il pulsante destro del mouse sul metodo, passare alla dichiarazione per aprire il Visualizzatore assembly in cui è possibile confrontare l'attributo
Export
con il selettore in questione
Cercare l'intera associazione di classi. Poiché si sa che si tratta di un'istanza di
NSTableView
è possibile digitare:NSTableView x;
- Fare clic con il pulsante destro del mouse su
NSTableView
, passare alla dichiarazione in Assembly Browser - Cercare il selettore in questione
È possibile usare la documentazione online dell'API Xamarin.Mac.
Miguel offre una visualizzazione "Rosetta Stone" delle API Xamarin.Mac qui che è possibile cercare un'API specifica. Se l'API non è specifica di AppKit o macOS, è possibile trovarla lì.