Partager via


API macOS pour les développeurs Xamarin.Mac

Vue d’ensemble

Pendant la majeure partie de votre temps de développement avec Xamarin.Mac, vous pouvez penser, lire et écrire en C# sans trop vous soucier des API sous-jacentes Objective-C . Toutefois, vous devez parfois lire la documentation de l’API d’Apple, traduire une réponse de Stack Overflow en solution à votre problème ou comparer à un exemple existant.

Lire suffisamment Objective-C pour être dangereux

Parfois, il est nécessaire de lire une définition ou un Objective-C appel de méthode et de le traduire en méthode C# équivalente. Examinons une définition de Objective-C fonction et dé décomposer les éléments. Cette méthode (un sélecteur dans Objective-C) se trouve sur NSTableView:

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

La déclaration peut être lue de gauche à droite :

  • Le - préfixe signifie qu’il s’agit d’une méthode instance (non statique). + signifie qu’il s’agit d’une méthode de classe (statique)
  • (BOOL) est le type de retour (bool en C#)
  • canDragRowsWithIndexes est la première partie du nom.
  • (NSIndexSet *)rowIndexes est le premier paramètre et avec son type. Le premier paramètre est au format : (Type) paramName
  • atPoint:(NSPoint)mouseDownPoint est le deuxième paramètre et son type. Chaque paramètre après le premier est le format : selectorPart:(Type) paramName
  • Le nom complet de ce sélecteur de message est : canDragRowsWithIndexes:atPoint:. Notez le : à la fin , c’est important.
  • La liaison C# Xamarin.Mac réelle est la suivante : bool CanDragRows (NSIndexSet rowIndexes, PointF mouseDownPoint)

Cet appel de sélecteur peut être lu de la même façon :

[v canDragRowsWithIndexes:set atPoint:point];
  • Le instance v a son canDragRowsWithIndexes:atPoint sélecteur appelé avec deux paramètres, set et point, passé.
  • En C#, l’appel de méthode ressemble à ceci : v.CanDragRows (set, point);

Recherche du membre C# pour un sélecteur donné

Maintenant que vous avez trouvé le Objective-C sélecteur que vous devez appeler, l’étape suivante consiste à le mapper au membre C# équivalent. Vous pouvez essayer quatre approches (en continuant avec l’exemple NSTableView CanDragRows ) :

  1. Utilisez la liste de saisie semi-automatique pour rechercher rapidement quelque chose du même nom. Comme nous savons qu’il s’agit d’un instance de NSTableView vous pouvez taper :

    • NSTableView x;
    • x. [ctrl+espace si la liste n’apparaît pas).
    • CanDrag [entrée]
    • Cliquez avec le bouton droit sur la méthode, accédez à la déclaration pour ouvrir l’Explorateur d’assemblys où vous pouvez comparer l’attribut Export au sélecteur en question
  2. Recherchez l’intégralité de la liaison de classe. Comme nous savons qu’il s’agit d’un instance de NSTableView vous pouvez taper :

    • NSTableView x;
    • Cliquez avec le bouton droit sur NSTableView, accédez à la déclaration dans l’Explorateur d’assemblys
    • Rechercher le sélecteur en question
  3. Vous pouvez utiliser la documentation en ligne de l’API Xamarin.Mac .

  4. Miguel fournit ici une vue « Rosetta Stone » des API Xamarin.Mac que vous pouvez rechercher pour une API donnée. Si votre API n’est pas spécifique à AppKit ou macOS, vous pouvez la trouver ici.