Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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) paramNameatPoint:(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
vha il selettorecanDragRowsWithIndexes:atPointchiamato con due parametri esetpoint, 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
Exportcon 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ì.