Les nouvelles APIs de SnowLeopard (& les nouveautés des DevTools)

AliGatorAliGator Membre, Modérateur
septembre 2009 modifié dans Xcode et Developer Tools #1
Je n'ai pas encore eu la chance de passer à  Snow Leopard, mais je vois déjà  qu'il y a pas mal de nouveautés qui arrivent avec.

Du côté de l'utilisation en tant que programmeur, il y a bien sûr le nouveau Xcode, avec maintenant 4 compilateurs, dont LLVM-GCC mais aussi et surtout Clang d'intégré à  10.6.

Mais il y a aussi l'introduction des blocks (dont psychoh13 nous parlait déjà  il y a qques temps et dont parle l'article de ArsTechnica aussi), et de GCD (hop), et sans doute donc des APIs qui vont avec (dispatch_async, dispatch_apply, ...) qui combinent ces 2 choses (GCD et les blocs)


Ce thread a pour but de discuter de ces nouvelles fonctionnalités et APIs et de faire part des découvertes de chacuns ;)
«1

Réponses

  • Paisible.frPaisible.fr Membre
    02:06 modifié #2
    Alors pour commencer à  découvrir toutes ces nouveautés, autant commencer par s'informer à  la source :

    (voir à  la fin "API Delta Documents" : certainement un bon point de départ pour découvrir les nouvelles APIs)
  • muqaddarmuqaddar Administrateur
    02:06 modifié #3
    Je n'avais pas prévu de passer à  Snow Leopard avant quelques mois, mais si c'est le seul moyen pour avoir le nouvel Xcode, je crois que je vais y passer rapidement. :-)
  • Paisible.frPaisible.fr Membre
    02:06 modifié #4
    Apparement tu peux égalememt le télécharger sur le site developer.apple.com
    Mais comme il faut impérativement Snow Leopard pour le faire fonctionner...  ;)
  • LexxisLexxis Membre
    02:06 modifié #5
    La nouvelle version d'XCode est sur le DVD d'install de SL. Il n'est donc pas utilile de le télécharger. Cependant il faut tout de même télécharger le SDK iPhone 3.0 pour développer sur iPhone. Attention, je parles bien ici du SDK uniquement (environ 400Mo) et non pas du SDK+Xcode comme cela était le cas pour Leopard.
  • muqaddarmuqaddar Administrateur
    02:06 modifié #6
    Merci pour les infos ! :)
  • Paisible.frPaisible.fr Membre
    02:06 modifié #7
    dans 1251817210:

    La nouvelle version d'XCode est sur le DVD d'install de SL. Il n'est donc pas utilile de le télécharger. Cependant il faut tout de même télécharger le SDK iPhone 3.0 pour développer sur iPhone. Attention, je parles bien ici du SDK uniquement (environ 400Mo) et non pas du SDK+Xcode comme cela était le cas pour Leopard.

    Je confirme à  200 %. C'étais juste une boutade pour dire à  muqaddar qu'il ne pourra pas échapper au passage à  SnowLeopard s'il veut utiliser xCode 3.2
  • AliGatorAliGator Membre, Modérateur
    02:06 modifié #8
    Cool, enfin !
    What&#39 a écrit: »
    Renaming a project. Xcode can now rename a project. Choosing Project > Rename lets you specify a new name for a project. Xcode shows you the places in which the rename operation takes place, which includes the project package, targets, and info-plist files.

    Source
  • muqaddarmuqaddar Administrateur
    02:06 modifié #9
    dans 1251820053:

    Cool, enfin !
    What&#39 a écrit: »
    Renaming a project. Xcode can now rename a project. Choosing Project > Rename lets you specify a new name for a project. Xcode shows you the places in which the rename operation takes place, which includes the project package, targets, and info-plist files.

    Source


    Génial en effet !!! :-)
  • denis_13denis_13 Membre
    02:06 modifié #10
    bonjour,
    il me semble avoir lu dans les release notes que iPhoneOS n'est plus supporté qu'à  partir de la version 3.0. Si l'on fait une mise à  jours (de Leopard vers Snow Leopard, et de XCode 3.1.3 vers  3.2 vers , savez vous s'il vire les anciens SDK où si la compilation de projets en 2.2.1 reste possible?
  • zoczoc Membre
    02:06 modifié #11
    La compilation en 2.2.1 reste possible.

    Par contre je crois qu'il n'est pas possible de publier sur l'appstore quand on compile en 2.2.1 avec XCode 3.2.
  • denis_13denis_13 Membre
    02:06 modifié #12
    merci Zoc :) (je vais pouvoir passer à  SL, si la poste se bouge un peu...)
  • muqaddarmuqaddar Administrateur
    septembre 2009 modifié #13
    Xcode 3.2

    - Plus agréable à  l'oeil (plus doux ?)

    - Documentation entièrement refaite (un peu longue à  s'afficher sur mon mac). J'ai juste mis 10 minutes pour trouver où charger la doc => dans les préférences maintenant.

    - Affichage des erreurs et warnings plus simple : il ne décale plus la ligne en question dans le code, ça c cool !!! Il affiche l'erreur sur la droite de la ligne

    - J'ai testé la fonction pour renommer un projet : ça marche à  merveille, c'est vraiment bien !

    - La fonction Analyze a l'air bien sympa également.

    Pas encore testé le reste.
  • yoannyoann Membre
    02:06 modifié #14
    Bien sympa ce nouveau Xcode, j'ai simplement du mal avec la nouvelle doc de mon coté. Comme on le vois sur le screen de muqaddar, lorsqu'on fait une recherche on se prend une barre de scroll horizontale sur la doc, je trouve ça un peut pénible (d'autant plus que j'affiche généralement la doc sur mon écran format portrait)

    La nouvelle police de caractère utilisé pour le code est sympa je trouve (si vous avez vos propre profile de coloration syntaxique passé sur l'original pour test)
  • Manu17Manu17 Membre
    02:06 modifié #15
    dans 1251808544:


    Ce thread a pour but de discuter de ces nouvelles fonctionnalités et APIs et de faire part des découvertes de chacuns ;)

    Bonjour,
    Pour mon premier message dans ce forum  :) , je vais parler d'une nouvelle fonction de NSString en lien avec les fameux bloc(k)s
    Le code télécharge un fichier texte sur le net et effectue un traitement pour chaque ligne (avec un NSScanner pour récupérer ce qui m'intéresse).
    L'ancien code:
    NSURL *url = [NSURL URLWithString:@&quot;http://xx/fichier.txt&quot;];<br />NSString *content = [NSString stringWithContentsOfURL:url encoding:NSISOLatin1StringEncoding error:&amp;theError];<br />NSArray *byLine = [content componentsSeparatedByString:@&quot;&#092;n&quot;];<br />for (NSString *aLine in byLine) {<br />		// Traitement<br />}
    

    Le nouveau code snowisé:
    NSURL *url = [NSURL URLWithString:@&quot;http://xx/fichier.txt&quot;];<br />NSString *content = [NSString stringWithContentsOfURL:url encoding:NSISOLatin1StringEncoding error:&amp;theError];<br />[content enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) { <br />		// Traitement<br />}];<br />
    

    Le code est un peu plus compact mais surtout - et c'est une bonne surprise -plus rapide:je suis passé de 0.9 seconde de traitement (après téléchargement) à  0.7 secondes en utilisant l'énumération avec bloc(k) ce qui fait quand même 25% de mieux !
  • muqaddarmuqaddar Administrateur
    02:06 modifié #16
    dans 1252000905:

    Bien sympa ce nouveau Xcode, j'ai simplement du mal avec la nouvelle doc de mon coté. Comme on le vois sur le screen de muqaddar, lorsqu'on fait une recherche on se prend une barre de scroll horizontale sur la doc, je trouve ça un peut pénible (d'autant plus que j'affiche généralement la doc sur mon écran format portrait)

    La nouvelle police de caractère utilisé pour le code est sympa je trouve (si vous avez vos propre profile de coloration syntaxique passé sur l'original pour test)


    J'ai testé la police, je ne suis pas convaincu, un peu trop tassé.
    Je reste fidèle à  mon Monaco, et ce sans pression. ;) Et en 11pt s'il vous plaà®t.

    C'est clair que pour la doc, je ne suis pas convaincu, l'affichage rame vraiment chez moi
  • Paisible.frPaisible.fr Membre
    02:06 modifié #17
    Avez-vous notez que les templates de projets du nouvel xCode 3.2 incluent systèmatiquement le framework CoreData ?
  • muqaddarmuqaddar Administrateur
    02:06 modifié #18
    En tout cas, la coloration syntaxique, c'est pas ça !!!

    Voir la capture sur les variables d'instance.
  • segaoufsegaouf Membre
    02:06 modifié #19
    Pour moi, l'unique interet de Snow Leopard residerait dans le nouvel Xcode. Vaut-il le coup?

    J'ai deja achete Snow, mais je ne l'install pas pour le moment ...
  • zoczoc Membre
    02:06 modifié #20
    dans 1252328263:

    En tout cas, la coloration syntaxique, c'est pas ça !!!

    http://bugreport.apple.com  ;)
  • zoczoc Membre
    02:06 modifié #21
    dans 1252335169:

    Pour moi, l'unique interet de Snow Leopard residerait dans le nouvel Xcode. Vaut-il le coup?

    Clairement, oui, rien que le support du compilateur LLVM Clang 1.0 et l'analyse syntaxique valent le coup.
  • laudemalaudema Membre
    02:06 modifié #22
    dans 1252005047:

    C'est clair que pour la doc, je ne suis pas convaincu, l'affichage rame vraiment chez moi

    En cours de chargement je ne peux pas encore essayer mais as tu donné sa chance à  "Quick Help" justement ?
    https://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeWorkspace/200-Documentation_Access/documentation_access.html#//apple_ref/doc/uid/TP40006920-CH260
    Je ne l'utilisais que rarement car il ralentissait trop (analysant à  chaque frappe du clavier) la nouvelle mouture semble plus pratique.
  • muqaddarmuqaddar Administrateur
    02:06 modifié #23
    Je vais regarder ça. Merci.
  • Philippe49Philippe49 Membre
    septembre 2009 modifié #24
    dans 1252004147:

    Bonjour,
    Pour mon premier message dans ce forum  :) , je vais parler d'une nouvelle fonction de NSString en lien avec les fameux bloc(k)s
    Le code télécharge un fichier texte sur le net et effectue un traitement pour chaque ligne (avec un NSScanner pour récupérer ce qui m'intéresse).
    L'ancien code:
    NSURL *url = [NSURL URLWithString:@&quot;http://xx/fichier.txt&quot;];<br />NSString *content = [NSString stringWithContentsOfURL:url encoding:NSISOLatin1StringEncoding error:&amp;theError];<br />NSArray *byLine = [content componentsSeparatedByString:@&quot;&#092;n&quot;];<br />for (NSString *aLine in byLine) {<br />		// Traitement<br />}
    

    Le nouveau code snowisé:
    NSURL *url = [NSURL URLWithString:@&quot;http://xx/fichier.txt&quot;];<br />NSString *content = [NSString stringWithContentsOfURL:url encoding:NSISOLatin1StringEncoding error:&amp;theError];<br />[content enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) { <br />		// Traitement<br />}];<br />
    


    Le code est un peu plus compact mais surtout - et c'est une bonne surprise -plus rapide:je suis passé de 0.9 seconde de traitement (après téléchargement) à  0.7 secondes en utilisant l'énumération avec bloc(k) ce qui fait quand même 25% de mieux !


    Le gain pose question : il est plus facile d'optimiser le découpage par ligne d'un texte par les '\n' (enumerateLinesUsingCeQuonVeut) que le découpage général par une sous-chaà®ne de caractères (componentsSeparatedByString)
    Dans un cas, il s'agit de repérer un caractère ascii, dans l'autre il y a toute une chaà®ne de caractères unicode ... Il faut donc au moins deux tests à  la place d'un.
    De plus avec enumerateLinesUsingCeQuonVeut, on n'est pas obligé de faire la découpe pour ensuite lister, mais on peut découper au fur et à  mesure. L'algorithme n'est pas le même.

    Bienvenu Manu17 !
  • Philippe49Philippe49 Membre
    02:06 modifié #25
    dans 1252005047:

    C'est clair que pour la doc, je ne suis pas convaincu, l'affichage rame vraiment chez moi

    Il y a toujours un temps d'adaptation. Je commence à  apprécier, notamment pour un sujet donné on a l'ensemble des documents associés, alors qu'avant il fallait fouiller.

    A noter l'option+click qui est enrichi :
  • muqaddarmuqaddar Administrateur
    02:06 modifié #26
    Le QuickHelp marche pour des méthodes "classiques" (UIColor par exemple), mais pas sur les méthodes delegate par exemple comme :

    - (void)applicationDidFinishLaunching:(UIApplication *)application
    


    Ou alors je ne sais pas m'en servir !
  • muqaddarmuqaddar Administrateur
    02:06 modifié #27
    dans 1252336445:

    dans 1252328263:

    En tout cas, la coloration syntaxique, c'est pas ça !!!

    http://bugreport.apple.com  ;)


    J'essaie de me connecter depuis hier et je tombe sur ça.

    Il faut donc contacter Apple pour leur dire que le système de rapport de bug a un bug ! ;)  :brule:

  • Philippe49Philippe49 Membre
    septembre 2009 modifié #28
    dans 1252394070:

    Le QuickHelp marche pour des méthodes "classiques" (UIColor par exemple), mais pas sur les méthodes delegate par exemple comme :

    - (void)applicationDidFinishLaunching:(UIApplication *)application
    


    Ou alors je ne sais pas m'en servir !


    Effectivement, c'est un bug !
    il faut le signaler à  Apple ... persévère  :fouf): :fouf):

    A noter que les panels du QuickHelp peuvent être conservés à  l'écran, ce qui peut s'avérer très pratique.
    [EDIT] avec le bémol, qu'un nouveau quickHelp ferme le précédent .. c'est ballot
  • laudemalaudema Membre
    02:06 modifié #29
    dans 1252395779:

    [EDIT] avec le bémol, qu'un nouveau quickHelp ferme le précédent .. c'est ballot


    Comme tu dis !
    Au passage c''est Quick Help qui a récupéré option double clic et ses liens s'ouvrent plus vite. Mais ils ne concernent que la doc sur disque. Peut être que la doc "normale" va t-elle charger les liens qui pointent sur le web ?

    Autre chose: il ne me complète plus mes variables une fois déclarées, même si j'enregistre le fichier avant de continuer ma saisie.
    Et ça ça m'énerve beaucoup.
  • AliGatorAliGator Membre, Modérateur
    02:06 modifié #30
    Pour la coloration syntaxique... j'ai déjà  le même souci avec XCode 3.1 sous Leopard en fait ! (je n'avais jamais trop fait gaffe, pour moi du moment que le mot n'est pas en noir mais en couleur pour me montrer que c'est un mot "reconnu"...)
    En fait j'ai l'impression que c'est à  cause de mots clés qui dans un autre contexte peuvent avoir aussi un sens...

    Par exemple si dans une de mes classes je met une [tt]@property NSString* name;[/tt], quand je l'utilise avec [tt]self.name[/tt] dans mon code ensuite, elle se colore en bleu/violet. Si je la nomme "name2" au lieu de "name", elle se colorera en vert/bleu canard comme les autres @property et variables d'instances.

    ---

    Sinon je compte passer à  Snow Leopard (surtout pour Xcode) en fin de semaine (et on va passer le pas au boulot aussi)... mais les petites trucs que vous décrivez, comme le option-clic sur un mot pour avoir la doc (dont je me sers vraiment tout le temps) qui ne marcherait plus avec les méthodes de delegate, ou l'autocomplétion qui ne marche plus tout le temps... c'est des trucs tout cons, mais super méga bloquants quand même pour la programmation de tous les jours !!

    Et quand en plus, d'après ce qu'il me semble avoir lu qqpart, qu'il y a un pb dans 10.6 qui fait qu'on ne peut plus créer de réseau wifi Ad-Hoc (qqun peut confirmer ou infirmer ça ?) alors que je m'en sers tout le temps pour ma part (pour permettre à  l'iPhone de dev de se connecter au Mac voire accéder au net à  travers ça quand j'en ai besoin, ne pouvant pas pour des raisons techniques me connecter au réseau Wifi de la boite avec l'iPhone)... ben ça me pose des questions de savoir si je vais finalement passer le pas malgré tout...?

    Vos avis ?
  • Philippe49Philippe49 Membre
    02:06 modifié #31
    Pour les méthodes delegate , le bug ne concerne que le Quick Help. Il y a toujours une option "Find Documentation for Selected Text", et on peut lui associer un raccourci clavier si on veut.

    Pour la présentation de la doc, il y a du changement dans nos habitudes, mais moi j'aime bien.

    Pour les problèmes de complétion syntaxique, j'ai également remarqué que ce problème se posait avec les versions précédentes, et que demander la complétion (option du menu ou raccourci clavier) donnait en général ce qu'il fallait.
Connectez-vous ou Inscrivez-vous pour répondre.