web-dev-qa-db-fra.com

Xcode: Possibilité de créer automatiquement des stubs pour les méthodes requises par l'interface de protocole?

Venant d’un arrière-plan Eclipse/Java, l’une de mes fonctionnalités préférées est la possibilité de masquer rapidement toutes les méthodes requises par une interface. Dans Eclipse, je peux choisir «Remplacer/implémenter» dans le menu source pour générer des méthodes de remplacement pour n’importe quelle méthode de l’interface.

J'aimerais faire la même chose en Objective-C. Par exemple, si je déclare une classe qui implémente le protocole 'NSCoding', j'aimerais que Xcode génère automatiquement les méthodes requises pour implémenter ce protocole. Il est frustrant de devoir rechercher puis copier/coller les signatures des méthodes requises à chaque protocole que je tente d'implémenter.

Je cherche depuis un moment à savoir si cela est possible, mais je n'ai encore rien trouvé de prometteur. Est-ce possible dans XCode?

46
Eric Farraro

Accessorizer écrira les méthodes d'encodage et de décodage des ivars qui lui sont transmis (protocole NSCoding et archivage NSDocument). Il générera également des constantes de chaîne, soit statique, soit #define avec un préfixe personnalisé. copyWithZone :; et d'autres choses si vous avez besoin - le tout à partir d'un simple raccourci via Services ou à partir de la barre d'outils. Archivage par clé Accessorizer

7
Kevin

Je crois que Accessorizer fera ce que vous voulez.

8
jessecurry

_ {Pas la réponse directe, juste un indice:} _

XCode ne le peut pas immédiatement.

Mais AppCode can.

Il peut faire cela automatiquement (avec votre permission, bien sûr).

Si certaines méthodes de protocole marquées comme @required - AppCode soulignent la mise en œuvre et suggèrent de mettre en œuvre cette méthode.

example

Méthodes @optional également disponibles pour une implémentation automatique (raccourci: control + I).

6
skywinder

Je cherche également un moyen de générer des stubs de méthodes pour les protocoles de mon fichier d'en-tête. J'ai vérifié Accessorizer et il semble être un outil pratique, mais à moins que je ne manque quelque chose, je n'ai pas trouvé le moyen de le générer pour générer des stubs de méthode pour un protocole. 

Eric, si vous avez trouvé une autre solution, postez ce que vous avez trouvé. C'est étonnant pour moi que XCode ne l'ait pas déjà intégré à l'EDI.

1
Brad

Puisque le lien donné à la réponse acceptée ne fonctionne plus (et est redirigé vers une annonce), voici une autre bonne explication sur la façon d'utiliser l'accesseur pour créer des stubs de méthode de protocole.

1
pille

Xcode 3.2 complétera automatiquement les implémentations de méthodes connues. En d'autres termes, si la méthode est déclarée quelque part (par exemple, dans un protocole), lorsque vous commencez à la taper dans un fichier .m, Xcode 3.2 complétera automatiquement la signature de la méthode pour vous. Ce n’est pas tout à fait ce que vous avez demandé, mais c’est terriblement pratique.

1
Lily Ballard

Vous pouvez créer des scripts pour l'élément de menu de script dans AppleScript, Perl, Python, Ruby ou tout autre langage de script intégré au menu de script.

Vous pouvez placer le point d'insertion dans le fichier .m et demander au script de rechercher le fichier .h correspondant. Localisez les protocoles supportés, etc.

MacTech a publié un article en 2007 Scripts de menu Xcode

1
Niels Castle

Dans mon cas, le style ci-dessous m'aide beaucoup. En un sens, j'ai résolu mon problème.

Supposons que vous ayez la déclaration de méthode suivante:

+(DBManager*)getSharedInstance;

A partir du fichier d'implémentation, vous commencez à taper + ge et xcode choisira automatiquement la méthode

+(DBManager*)getSharedInstance;
0

Je sais que c’est une vieille question, mais si vous souhaitez toujours voir les dernières définitions, faites un clic droit sur la classe en question et sélectionnez Aller à la définition. Ici, toutes les fonctions non dépréciées sont lues afin que vous ne comptiez pas sur une tierce partie pour rester à jour. 

0
Mark McCorkle

Sur la base du script Ruby "Create @property, @synthesize & dealloc from Variable Declaration" d'AllanCraig, j'en ai créé un pour générer des stubs d'implémentation à partir des interfaces: http://Pastebin.com/4T2LTBh6

Comment utiliser?

  • Configurez le script sur votre XCode (script shell) et attribuez-lui un raccourci (par exemple, CMD + 5).
  • Sélectionnez les lignes de votre fichier d'interface dans lesquelles vous souhaitez générer l'implémentation, puis appuyez sur la touche de raccourci.
  • Votre .m contiendra vos méthodes sélectionnées.
0
AlfredBaudisch