Rozhraní API pro macOS pro vývojáře Xamarin.Mac
Přehled
Po většinu času vývoje pomocí Xamarin.Mac si můžete myslet, číst a psát v jazyce C# bez velkého zájmu o podkladová Objective-C rozhraní API. Někdy ale budete muset přečíst dokumentaci k rozhraní API od Společnosti Apple, přeložit odpověď z Stack Overflow na řešení vašeho problému nebo porovnat s existující ukázkou.
Čtení dostatečně Objective-C nebezpečné
Někdy bude nutné přečíst definici Objective-C nebo volání metody a přeložit ji na ekvivalentní metodu jazyka C#. Pojďme se podívat na Objective-C definici funkce a rozdělit části. Tuto metodu (selektor v Objective-C) najdete na NSTableView
:
- (BOOL)canDragRowsWithIndexes:(NSIndexSet *)rowIndexes atPoint:(NSPoint)mouseDownPoint
Deklaraci lze přečíst zleva doprava:
- Předpona
-
znamená, že se jedná o metodu instance (nestatické). + znamená, že se jedná o metodu třídy (statické). (BOOL)
je návratový typ (bool v jazyce C#).canDragRowsWithIndexes
je první část názvu.(NSIndexSet *)rowIndexes
je první parametr a jeho typ. První parametr je ve formátu:(Type) paramName
atPoint:(NSPoint)mouseDownPoint
je druhý parametr a jeho typ. Každý parametr za prvním formátem:selectorPart:(Type) paramName
- Úplný název tohoto selektoru zpráv je:
canDragRowsWithIndexes:atPoint:
.:
Všimněte si na konci – je důležité. - Skutečná vazba jazyka C# Xamarin.Mac je:
bool CanDragRows (NSIndexSet rowIndexes, PointF mouseDownPoint)
Toto vyvolání selektoru se dá číst stejným způsobem:
[v canDragRowsWithIndexes:set atPoint:point];
- Instance
v
má svůjcanDragRowsWithIndexes:atPoint
selektor volaný se dvěma parametryset
apoint
předaný. - V jazyce C# vypadá vyvolání metody takto:
v.CanDragRows (set, point);
Vyhledání člena jazyka C# pro daný selektor
Teď, když jste našli Objective-C selektor, který potřebujete vyvolat, je dalším krokem mapování na ekvivalentního člena C#. Existují čtyři přístupy, které můžete vyzkoušet (pokračujte v příkladu NSTableView CanDragRows
):
Pomocí seznamu automatického dokončování můžete rychle vyhledat něco se stejným názvem. Protože víme, že se jedná o instanci
NSTableView
, kterou můžete zadat:NSTableView x;
x.
[ctrl+mezerník, pokud se seznam nezobrazí).CanDrag
[enter]- Klikněte pravým tlačítkem myši na metodu, přejděte na deklaraci a otevřete prohlížeč sestavení, kde můžete porovnat
Export
atribut s daným selektorem.
Prohledejte celou vazbu třídy. Protože víme, že se jedná o instanci
NSTableView
, kterou můžete zadat:NSTableView x;
- Klikněte pravým tlačítkem a
NSTableView
přejděte na deklaraci do prohlížeče sestavení. - Vyhledání příslušného selektoru
Online dokumentaci k rozhraní API Xamarin.Mac můžete použít.
Miguel zde poskytuje zobrazení rozhraní API Xamarin.Mac "Rosetta Stone", pomocí kterého můžete vyhledat dané rozhraní API. Pokud vaše rozhraní API není specifické pro AppKit nebo macOS, můžete ho tam najít.