Snippets de Xcode

CéroceCéroce Membre, Modérateur
octobre 2014 modifié dans Xcode et Developer Tools #1
Bonjour à  tous,

Ces jours-ci, je réfléchis à  quelques manières de gagner en productivité avec Xcode. Aujourd'hui, je propose d'utiliser des Code Snippets.

Pour rappel, pour créer un snippet:
- taper du code
- le sélectionner
- le glisser dans la zone des snippets (en bas à  droite, c'est l'icône avec des {} ).

Dans la fenêtre qui apparaà®t:
- Completion Shortcut: l'abréviation qui correspond au snippet
- Completion Scope: la zone du code dans laquelle est reconnue l'abréviation

Sachez qu'on peut définir des tokens en utilisant la syntaxe <#token#>.
Mots clés:

Réponses

  • CéroceCéroce Membre, Modérateur
    octobre 2014 modifié #2
    Voici quelques snippets que j'utilise, j'attends les vôtres pour me donner des idées:

    parama
    NSParameterAssert(<#condition#>);

    nslogp
    NSLog(@%@ <#format#>", __PRETTY_FUNCTION__);

    @catano
    @interface <#class#> ()



    @end

    weaks
    __weak <#class#> *weakSelf = self;

    @prop
    @property (<#options#>) <#type#><#name#>;

    mark
    // MARK: <#marker#>
  • AliGatorAliGator Membre, Modérateur
    octobre 2014 modifié #3
    Pas bête pour "nslogp".

    Pour "@catano" normalement y'a déjà  si tu tapes le début de "@interface" et c'est bon. Bon le prefix officiel c'est @interface-category mais bon vu qu'il suffit de taper le début...
     

    __weak <#class#> *weakSelf = self;

    Moi je préfère utiliser typeof, en plus comme ça t'as rien à  renseigner et ça marche mm si tu refactor.
    wself:
    __weak typeof(self) weakSelf = self;
    sself:
    __strong typeof(weakSelf) strongSelf = weakSelf;
  • CéroceCéroce Membre, Modérateur

    Pour "@catano" normalement y'a déjà  si tu tapes le début de "@interface" et c'est bon.

    ça ne fonctionne pas systématiquement chez moi, c'est souvent le 3ème choix proposé quand je commence à  taper @interface.

    Moi je préfère utiliser typeof, en plus comme ça t'as rien à  renseigner et ça marche mm si tu refactor.
    wself:

    __weak typeof(self) weakSelf = self;

    J'avoue que je ne connaissais pas l'opérateur typeof(). Effectivement, c'est bien mieux comme tu le proposes.
  • CéroceCéroce Membre, Modérateur

    NSHipster avait proposé un article au sujet des Snippets. Il est accompagné de snippets d'exemple.


    Je trouve que beaucoup sont intéressants, même si évidemment, les snippets sont quelque chose de très personnel.


  • Joanna CarterJoanna Carter Membre, Modérateur


    sself:



    __strong typeof(weakSelf) strongSelf = weakSelf;



     


    Je préférerais une version plus complète


     


    sself:



    typeof(weakSelf) strongSelf = weakSelf;

    if (strongSelf)
    {
    <##>
    }
  • Joanna CarterJoanna Carter Membre, Modérateur
    Puis-je faire deux petits changements ?

     



    nslogp



    NSLog(@%@ <#format#>", __PRETTY_FUNCTION__);




    NSLog(@%s, __PRETTY_FUNCTION__);


    Parce que le macro __PRETTY_FUNCTION__ renvoie un C string

     



    mark



    // MARK: <#marker#>




    #pragma mark - <#marker#>

    Parce que le marker apparaà®tra dans la liste des méthodes au-dessus la fenêtre code


     


     


  • AliGatorAliGator Membre, Modérateur
    octobre 2014 modifié #8

    #pragma mark - <#marker#>
    Parce que le marker apparaà®tra dans la liste des méthodes au-dessus la fenêtre code

    Oui mais ça marche aussi avec "// MARK: <#marker#>".
    • Et en plus avec les marqueurs au format commentaire, il n'y a pas que "// MARK: xxx", il y a aussi "// TODO: xxx", "// FIXME: xxx" "// !!!: xxx" et "// ???: xxx".
    • Et en plus les marqueurs au format "commentaire" sont compatibles avec Swift (qui ne supporte pas les #pragma) mais aussi avec des fichiers qui ne sont pas du code, comme typiquement les "Localizable.strings"
    Perso je mets toujours de "// MARK: - xxx" dans mes Localizable.strings, ça me permet de mieux organiser/grouper mes chaà®nes localisées par catégorie ou par écran et de sauter à  une catégorie de chaà®nes directement avec la Jump Bar comme je le fais dans un fichier de code :
  • Salut,


     


    Est-il possible de synchoniser les snippets entre deux Macs (via Dropbox par exemple ...).


    J'ai trouvé pour Xcode 4 mais rien pour Xcode 7.


     


    A+


  • CéroceCéroce Membre, Modérateur
    novembre 2015 modifié #10

    Ce plugin Xcode permet la synchro des snippets avec un dépôt git:


    https://github.com/acoomans/ACCodeSnippetRepositoryPlugin


     


    On peut l'installer facilement via Alcatraz.


  • Merci Céroce 


     


    Pour les snippets je préfère utiliser un cloud :


     


    http://runmad.com/blog/2012/09/xcode-code-snippets-and-syncing/


     


    A+

Connectez-vous ou Inscrivez-vous pour répondre.