2009-09-27 8 views
5

Dans Xcode (3.2 sur Snow Leopard) quand je commence à taper une fonction telle queL'éditeur Xcode par défaut à - (void) au lieu de - (voidPtr)?

-(void)myFunctionName { 

} 

Quand je commence à taper le conseil de code est

-(voidPtr 
  1. Quelle est la différence entre void et voidPtr? Je suppose que voidPtr est un pointeur d'une sorte, quels cas appellent son utilisation? Dois-je utiliser voidPtr au lieu de void? Puis-je modifier une préférence dans l'éditeur qui sera void par défaut et puis je peux taper P et tab compléter à voidPtr si je veux? Y a-t-il un moyen général de configurer ou de hiérarchiser les indicateurs de code afin que les astuces communes apparaissent avant des indicateurs de code plus obscurs? Est-il possible de créer des raccourcis d'indication de code?

  2. Où je tape quelques caractères et une commande pour développer le code standard?

  3. Quels sont les tutoriels recommandés pour devenir vraiment productif dans l'édition Xcode?

Mise à jour: Basé sur la suggestion de Darren il semble que voidptr vient de

CarbonCore/Threads.h 

... 

/* 
    The following ProcPtrs cannot be interchanged with UniversalProcPtrs because 
    of differences between 680x0 and PowerPC runtime architectures with regard to 
    the implementation of the Thread Manager. 
*/ 
typedef void *       voidPtr; 

Je courais Xcode sur une vanille nouvelle installation de Snow Leopard. Et je n'ai rien fait d'exotique avec mes projets. Commençons juste quelques tutoriels très basiques sur Xcode et Objective C. Toute personne expérimentée de l'Objective C a des informations de base utiles ici?

Répondre

2

Mise à jour: Ce était un bogue dans les anciennes versions de Xcode. Le bogue n ° 7256749 a été corrigé. J'ai juste essayé avec la nouvelle version de Xcode, et tout est rose.

Informations historiques: (pour les versions Xcode avant la sortie de Xcode 4.0)

Si vous commencez à taper une fonction de style C déclaration:

void SomeFunc(... 

alors "vide" apparaît comme la première suggestion. Le code de code de Xcode applique des règles différentes en fonction de la syntaxe environnante, et lorsque vous créez une déclaration de fonction Objective-C, il semble exclure tous les types intégrés, y compris void.

J'ai déposé un bug avec Apple (via bugreport.apple.com), et je vous recommande de faire la même chose. Apple priorise leurs correctifs logiciels (au moins partiellement) en fonction du nombre de rapports en double qu'ils voient pour un problème donné.

Note: Voici le texte intégral du rapport de bogue soumis à Apple:

Résumé:
sens du code de Xcode fournit une liste des correspondances proposées que vous tapez. Cette liste est filtrée en fonction du contexte. Lorsque vous tapez une déclaration de méthode Objective-C, les types intégrés (void, int, float, etc.) sont filtrés. Des types numériques tels que int et float peuvent être intentionnellement manquants afin d'encourager l'utilisation de NSInteger ou NSNumber, mais le type void est toujours utilisé tout le temps, et devrait vraiment apparaître dans la liste des suggestions.

Procédure pour reproduire:
1. Ouvrez Xcode
2. Créez un nouveau projet avec le modèle d'application Cocoa
3. Ouvrez le fichier d'en-tête de délégué de l'application
4. Commencer la création d'une déclaration de méthode avec un retour de vide Type:
- (
5. vo évasion de presse pour afficher la liste complète des achèvements proposées

Résultats attendus:
j'attendre de voir " void "au plus haut niveau de la liste des suggestions, et je m'attendrais à ce que ce soit le choix le plus probable.

Résultats réels:
La liste ne contient même pas « vide », et le candidat sélectionné est « voidptr », qui est déclaré dans CarbonCore/Threads.h

régression:
inconnu, mais certainement qui se passe dans la dernière version de Xcode (3.2 (1610)) sous Mac OS X10.6

notes:
Voir la discussion sur StackOverflow.com (Xcode editor default to -(void) instead of -(voidPtr)?)

+0

Merci pour votre réponse. Déposé un rapport de bug aussi. Existe-t-il un moyen de personnaliser les options de filtrage dans Xcode? –

+0

Pas que je sache. J'ai trouvé quelques-uns des défauts par frustration à la fois, mais dans l'ensemble cela fonctionne toujours. Si vous trouvez un moyen de les personnaliser, assurez-vous de nous le faire savoir! –

+0

Apple a corrigé ce problème avec Xcode version 4.0. Réponse mise à jour –

1

voidPtr n'est pas un type Objective-C ou Cocoa standard. XCode est susceptible de présenter voidPtr car il a trouvé ce symbole quelque part dans votre projet.

Vous pouvez sélectionner "Fichier> Ouvrir rapidement" (⌘⇧D) dans le menu et taper voidPtr pour voir où ce symbole est défini. Vous pouvez également faire de même en maintenant la touche Commande enfoncée et en double-cliquant sur un symbole dans votre code source.

Questions connexes