Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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#).canDragRowsWithIndexesje první část názvu.(NSIndexSet *)rowIndexesje první parametr a jeho typ. První parametr je ve formátu:(Type) paramNameatPoint:(NSPoint)mouseDownPointje 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
vmá svůjcanDragRowsWithIndexes:atPointselektor volaný se dvěma parametrysetapointpř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
Exportatribut 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
NSTableViewpř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.