Udostępnij za pośrednictwem


Interfejsy API systemu macOS dla deweloperów platformy Xamarin.Mac

Omówienie

Przez większość czasu opracowywanego za pomocą platformy Xamarin.Mac możesz myśleć, odczytywać i zapisywać w języku C# bez obaw o bazowe Objective-C interfejsy API. Jednak czasami musisz przeczytać dokumentację interfejsu API firmy Apple, przetłumaczyć odpowiedź z witryny Stack Overflow na rozwiązanie problemu lub porównać ją z istniejącym przykładem.

Czytanie wystarczająco dużo Objective-C , aby być niebezpiecznym

Czasami konieczne będzie odczytanie Objective-C wywołania definicji lub metody i tłumaczenie go na równoważną metodę języka C#. Przyjrzyjmy się Objective-C definicji funkcji i przeanalizujmy elementy. Ta metoda ( selektor w programie Objective-C) można znaleźć w witrynie NSTableView:

- (BOOL)canDragRowsWithIndexes:(NSIndexSet *)rowIndexes atPoint:(NSPoint)mouseDownPoint

Deklarację można odczytać od lewej do prawej:

  • Prefiks - oznacza, że jest to metoda wystąpienia (niestatyczna). + oznacza, że jest to metoda klasy (statyczna)
  • (BOOL) to zwracany typ (wartość logiczna w języku C#)
  • canDragRowsWithIndexes jest pierwszą częścią nazwy.
  • (NSIndexSet *)rowIndexes jest pierwszym parametrem i typem. Pierwszy parametr ma format: (Type) paramName
  • atPoint:(NSPoint)mouseDownPoint jest drugim parametrem i jego typem. Każdy parametr po pierwszym jest formatem: selectorPart:(Type) paramName
  • Pełna nazwa tego selektora komunikatów to: canDragRowsWithIndexes:atPoint:. Zanotuj wartość : na końcu — ważne jest.
  • Rzeczywiste powiązanie Xamarin.Mac C# to: bool CanDragRows (NSIndexSet rowIndexes, PointF mouseDownPoint)

To wywołanie selektora można odczytać w ten sam sposób:

[v canDragRowsWithIndexes:set atPoint:point];
  • Wystąpienie v ma swój canDragRowsWithIndexes:atPoint selektor o nazwie z dwoma parametrami i pointset , przekazane.
  • W języku C#wywołanie metody wygląda następująco: v.CanDragRows (set, point);

Znajdowanie elementu członkowskiego języka C# dla danego selektora

Po znalezieniu selektora Objective-C , który należy wywołać, następnym krokiem jest mapowanie tego elementu do równoważnego elementu członkowskiego języka C#. Istnieją cztery podejścia, które można wypróbować (kontynuując przykład NSTableView CanDragRows ):

  1. Użyj listy automatycznego uzupełniania, aby szybko wyszukać elementy o tej samej nazwie. Ponieważ wiemy, że jest to wystąpienie NSTableView , można wpisać:

    • NSTableView x;
    • x. [ctrl+spacja, jeśli lista nie jest wyświetlana).
    • CanDrag [enter]
    • Kliknij prawym przyciskiem myszy metodę, przejdź do deklaracji, aby otworzyć przeglądarkę zestawów, w której można porównać Export atrybut z selektorem
  2. Przeszukaj całe powiązanie klasy. Ponieważ wiemy, że jest to wystąpienie NSTableView , można wpisać:

    • NSTableView x;
    • Kliknij prawym przyciskiem myszy NSTableViewpozycję , przejdź do deklaracji w przeglądarce zestawów
    • Wyszukaj selektor, o których mowa
  3. Możesz użyć dokumentacji online interfejsu API platformy Xamarin.Mac.

  4. Miguel udostępnia tutaj widok "Rosetta Stone" interfejsów API platformy Xamarin.Mac, za pomocą którego można wyszukiwać dany interfejs API. Jeśli interfejs API nie jest specyficzny dla zestawu AppKit lub macOS, możesz go tam znaleźć.