15 jours de Swift

muqaddarmuqaddar Administrateur

Vieux motard que jamais ! Je me suis enfin mis à Swift ! 4 ans après sa sortie ! :p
C'est difficile de s'y mettre sur un gros projet, et on va toujours plus vite par habitude en Objective-C.

Bref, j'ai refait un LoginViewController, puis..., puis... en fait finalement je refais toute la couche Services de mon app en Swift (déjà une dizaine de contrôleurs).

Il y a tant de choses qui changent!
La compatibilité avec l'existant est un peu casse-tête et les aller-retours Swift <-> OC sont pénibles, mais ça marche plutôt bien. J'aurais préféré attaquer un nouveau projet pur Swift.

Xcode a fait des pas de géants en auto-complétion, et ça aide bien.

Tiens, un truc que je trouve sympa parmi d'autres, c'est les lazy vars.

Je reviendrais avec des questions dans quelques temps, mais Stack répond à pas mal de choses... (c'est l'avantage 4 ans après).

Réponses

  • klogklog Membre

    Merci pour ton retour... M'est avis que si Apple réserve à Objective-C le même sort qu'à OpenGL, j'ai intérêt à m'y mettre aussi un jour !

  • Bravo Muqa ! :)

  • muqaddarmuqaddar Administrateur

    @Draken a dit :
    Bravo Muqa ! :)

    Merci Draken ! Et à Céroce aussi qui m'a dit de m'y mettre pour me changer les idées par rapport à la partie Web de l'app.

    @klog a dit :
    Merci pour ton retour... M'est avis que si Apple réserve à Objective-C le même sort qu'à OpenGL, j'ai intérêt à m'y mettre aussi un jour !

    A mon avis, c'est pas demain la veille tant il doit y avoir d'app pros qui utilisent O-C.

  • Je viens de m'y mettre également. Je galère car j'utilise le playground qui me sort des insanités et à sa suite Xcode plante à tous les coups! Je suis sous 10.11.6 avec Xcode 8.0 et sur iBooks j'ai le bouquin de Swift 4.1.
    Quelqu'un a déjà eu des problèmes avec le Playground ?

  • PyrohPyroh Membre

    @tablier a dit :
    Je viens de m'y mettre également. Je galère car j'utilise le playground qui me sort des insanités et à sa suite Xcode plante à tous les coups! Je suis sous 10.11.6 avec Xcode 8.0 et sur iBooks j'ai le bouquin de Swift 4.1.
    Quelqu'un a déjà eu des problèmes avec le Playground ?

    Oui plein de gens. Ça commence à aller avec Xcode 10. C'est utilisable même si encore perfectible.

  • @tablier a dit :
    Quelqu'un a déjà eu des problèmes avec le Playground ?

    Jamais utilisé ce truc !

  • klogklog Membre
    juin 2018 modifié #8

    @muqaddar a dit :

    @klog a dit :

    Merci pour ton retour... M'est avis que si Apple réserve à Objective-C le même sort qu'à OpenGL, j'ai intérêt à m'y mettre aussi un jour !

    A mon avis, c'est pas demain la veille tant il doit y avoir d'app pros qui utilisent O-C.

    Le nombre d'applications qui utilisent OpenGL et OpenCL (jeux, pro, semi-pro) est monumental sur macOS... Et pourtant... de-pre-ca-ted.

  • muqaddarmuqaddar Administrateur

    @klog a dit :

    @muqaddar a dit :

    @klog a dit :

    Merci pour ton retour... M'est avis que si Apple réserve à Objective-C le même sort qu'à OpenGL, j'ai intérêt à m'y mettre aussi un jour !

    A mon avis, c'est pas demain la veille tant il doit y avoir d'app pros qui utilisent O-C.

    Le nombre d'applications qui utilisent OpenGL et OpenCL (jeux, pro, semi-pro) est monumental sur macOS... Et pourtant... de-pre-ca-ted.

    Oui, mais ce sont des APIs, pas un language en lui-même.

  • LeChatNoirLeChatNoir Membre, Modérateur

    Perso, chaque fois que j'ai à faire une évolution important sur un de mes ViewController, je m'oblige à le convertir en Swift.
    Il y a 2 ou 3 ans, c'était franchement difficile car on peinait à trouver des ressources.
    Aujourd'hui, c'est l'inverse, on commence à peiner à trouver des ressource Obj-C et on trouve plus son bonheur en Swift. Cette transition sur plusieurs années est compliquée pour nous je trouve mais le ciel se dégage.
    Ca reste un frein à l'innovation cependant car pdt que sur Android, les mecs ont juste à penser à leurs nouvelles features, nous on doit migrer...
    Pour les amateurs, c'est lourds.

  • @LeChatNoir Y’a Kotlin aussi sur Android qui risque d’avoir le même effet
  • @LeChatNoir a dit :
    Perso, chaque fois que j'ai à faire une évolution important sur un de mes ViewController, je m'oblige à le convertir en Swift.

    Ça ça m'intéresse.
    Comment mixer du code Objective-C et Swift ?
    Je suppose qu'il faut obligatoirement qu'une classe ou bien un ViewController soit entièrement soit en Obj-C, soit en Swift.
    Mais si ce ViewController converti en Swift doit utiliser ou communiquer avec des classes Obj-C, n'est-ce pas trop difficile, problématique ?

  • DrakenDraken Membre
    juin 2018 modifié #13

    Regarde sur l'iBook Store. Il y a deux ouvrages gratuits d'Apple sur Swift, dont l'un est consacré à la manière de faire cohabiter les deux langages dans la même application.

    EDIT : Ah non, ils l'ont retirés du Store .. Je n'arrive même plus à lire celui que j'avais gardé sur mon Mac ! :o

    Titre : Using Swift with Cocoa and Objective-C - Swift 4.0.3 Edition

    Ça sent le sapin pour Objective-C !

  • muqaddarmuqaddar Administrateur

    Ça ça m'intéresse.
    Comment mixer du code Objective-C et Swift ?

    Cela va t'énerver 1 semaine, et après tout roulera.
    J'ai réussi à utiliser des delegate O-C dans Swift par exemple, ou des singletons OC dans Swift.
    Y'a que mes nombreuses macros que j'ai remplacé par des enums et des struct.

    Et on appelle les VC Swift dans O-C sans problème. Il y a quelques lignes de codes à rajouter:

    • 1 fichier où tu écris les .h que tu appelleras depuis Swift
    • 1 entête bidon à ajouter dans les fichiers O-C où tu appelleras du Swift
    • des annotation @obj devant les méthodes Swift que tu souhaites exposer à O-C
  • @muqaddar a dit :

    Ça ça m'intéresse.
    Comment mixer du code Objective-C et Swift ?

    Cela va t'énerver 1 semaine, et après tout roulera.
    J'ai réussi à utiliser des delegate O-C dans Swift par exemple, ou des singletons OC dans Swift.
    Y'a que mes nombreuses macros que j'ai remplacé par des enums et des struct.

    Et on appelle les VC Swift dans O-C sans problème. Il y a quelques lignes de codes à rajouter:

    • 1 fichier où tu écris les .h que tu appelleras depuis Swift
    • 1 entête bidon à ajouter dans les fichiers O-C où tu appelleras du Swift
    • des annotation @obj devant les méthodes Swift que tu souhaites exposer à O-C

    manque le 'c' @objc

  • klogklog Membre

    @Draken a dit :
    Ça sent le sapin pour Objective-C !

    Si c'est le cas, ce que je pourrais facilement imaginer, il y a un truc que j'ai encore du mal à capter : beaucoup du code de la dernière WWDC est encore en O-C... Y compris sur des projets cross platform de présentation de nouvelles APIs. Si Apple avait une intention forte de passer à Swift, les consignes en interne ne seraient-elles pas de n'utiliser que Swift pour toutes les nouvelles démos ?

  • LarmeLarme Membre
    juin 2018 modifié #17
    > @klog a dit :
    > @Draken a dit :
    > Ça sent le sapin pour Objective-C !
    >
    >
    >
    >
    >
    > Si c'est le cas, ce que je pourrais facilement imaginer, il y a un truc que j'ai encore du mal à capter : beaucoup du code de la dernière WWDC est encore en O-C... Y compris sur des projets cross platform de présentation de nouvelles APIs. Si Apple avait une intention forte de passer à Swift, les consignes en interne ne seraient-elles pas de n'utiliser que Swift pour toutes les nouvelles démos ?

    Bien que je fasse du Swift à plein temps depuis 4 semaines, j'adore toujours mon Objective-C.

    L'avantage de l'Objective-C jusqu'à présent était qu'il n'était pas changeant. Tu peux regarder un tutoriel d'il y a 3 ans (tant que le framework en soit n'a pas changé), et il fonctionnera toujours. Ce qui n'est pas le cas pour le Swift. Les débutants se retrouvent perdus à suivre un tuto Swift 1. C'est le revers d'avoir un language qui évolue avec les suggestions de la communauté. Je me retrouve actuellement avec du code qui marche en Swift 4, mais donc les règles de bonnes conduites sont parfois en Swift 3 ou moins, mais qu'on ne touche pas l'instant pour éviter d'avoir des effets de bords (et une histoire de temps aussi).


    Heureusement, cela devrait changer, le langage est plus stable, les compatibilités (laisse ce code tourner en Swift N devrait arriver) et Apple aide quand même pour les migrations, mais pour les migrations de 1 à 2, 2 à 3, etc, il faut une version d'XCode différente.
  • > @Larme a dit :
    > > @klog a dit :
    > > @Draken a dit :
    > > Ça sent le sapin pour Objective-C !
    > >
    > >
    > >
    > >
    > >
    > > Si c'est le cas, ce que je pourrais facilement imaginer, il y a un truc que j'ai encore du mal à capter : beaucoup du code de la dernière WWDC est encore en O-C... Y compris sur des projets cross platform de présentation de nouvelles APIs. Si Apple avait une intention forte de passer à Swift, les consignes en interne ne seraient-elles pas de n'utiliser que Swift pour toutes les nouvelles démos ?
    >
    > Bien que je fasse du Swift à plein temps depuis 4 semaines, j'adore toujours mon Objective-C.
    >
    > L'avantage de l'Objective-C jusqu'à présent était qu'il n'était pas changeant. Tu peux regarder un tutoriel d'il y a 3 ans (tant que le framework en soit n'a pas changé), et il fonctionnera toujours. Ce qui n'est pas le cas pour le Swift. Les débutants se retrouvent perdus à suivre un tuto Swift 1. C'est le revers d'avoir un language qui évolue avec les suggestions de la communauté. Je me retrouve actuellement avec du code qui marche en Swift 4, mais donc les règles de bonnes conduites sont parfois en Swift 3 ou moins, mais qu'on ne touche pas l'instant pour éviter d'avoir des effets de bords (et une histoire de temps aussi).
    >
    >
    > Heureusement, cela devrait changer, le langage est plus stable, les compatibilités (laisse ce code tourner en Swift N devrait arriver) et Apple aide quand même pour les migrations, mais pour les migrations de 1 à 2, 2 à 3, etc, il faut une version d'XCode différente et il n'y a rien de magique pour Swift 2 à 4 par exemple.
  • klogklog Membre
    juin 2018 modifié #19

    @Larme a dit :
    Heureusement, cela devrait changer, le langage est plus stable, les compatibilités (laisse ce code tourner en Swift N devrait arriver) et Apple aide quand même pour les migrations, mais pour les migrations de 1 à 2, 2 à 3, etc, il faut une version d'XCode différente.

    J'ai justement prévu de sauter la pas avec la version 17 de Swift !
    ObjectiveSwift-C++ compatible Marzipan, Metal, MacARM, AppleCoinCoin, la crypto monnaie Cupertinienne, et surtout CoreBrain, la réalité augmenté par du Machine Learning directement connecté au cerveau en Thunderbolt 8 :)

  • @muqaddar a dit :
    Cela va t'énerver 1 semaine, et après tout roulera.
    J'ai réussi à utiliser des delegate O-C dans Swift par exemple, ou des singletons OC dans Swift.
    Y'a que mes nombreuses macros que j'ai remplacé par des enums et des struct.

    Et on appelle les VC Swift dans O-C sans problème. Il y a quelques lignes de codes à rajouter:

    • 1 fichier où tu écris les .h que tu appelleras depuis Swift
    • 1 entête bidon à ajouter dans les fichiers O-C où tu appelleras du Swift
    • des annotation @obj devant les méthodes Swift que tu souhaites exposer à O-C

    Merci Muqaddar, il va falloir que je regarde cela.
    Bien que la solution de klog d'attendre la version 17 de Swift soit aussi séduisante...

  • DrakenDraken Membre
    juin 2018 modifié #21

    @klog a dit :

    @Draken a dit :
    Ça sent le sapin pour Objective-C !

    Si c'est le cas, ce que je pourrais facilement imaginer, il y a un truc que j'ai encore du mal à capter : beaucoup du code de la dernière WWDC est encore en O-C... Y compris sur des projets cross platform de présentation de nouvelles APIs. Si Apple avait une intention forte de passer à Swift, les consignes en interne ne seraient-elles pas de n'utiliser que Swift pour toutes les nouvelles démos ?

    C'est la première idée qui m'ai venu en tête quand j'ai constaté la disparition du livre sur l'iBook Store.

    Par contre, j'arrive maintenant à lire sur la version conservée sur mon ordinateur ?? Un peu bugé la dernière version de High Sierra.

  • Bien j'ai également ce livre.

  • Bonne lecture, alors ..

  • @Eric P. a dit :

    Merci Muqaddar, il va falloir que je regarde cela.
    Bien que la solution de klog d'attendre la version 17 de Swift soit aussi séduisante...

    Attention, tu parles de la v17.03b ou de la v17.04a ? C'est pas la même chose ..

  • klogklog Membre

    Houlà ! Attention à la v17.04 ! Facebook exploite un bug de CoreBrain qui te siphonne le cerveau, celui de tes amis, des amis de tes amis... Cette version a lobotomisé 80 % de la Suisse. Et tant pis pour ceux qui n'avaient pas fait de backup avec Time Machine Learning.

    Une class action est en cours. Mais fallait lire les CGU, nom d'un chien !

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