15 jours de Swift
Vieux motard que jamais ! Je me suis enfin mis à Swift ! 4 ans après sa sortie !
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
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 !
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.
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 ?
Oui plein de gens. Ça commence à aller avec Xcode 10. C'est utilisable même si encore perfectible.
Jamais utilisé ce truc !
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.
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.
Ç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 ?
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 !
Titre : Using Swift with Cocoa and Objective-C - Swift 4.0.3 Edition
Ça sent le sapin pour Objective-C !
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:
manque le 'c' @objc
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 ?
> @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.
> > @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.
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
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...
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 ..
Attention, tu parles de la v17.03b ou de la v17.04a ? C'est pas la même chose ..
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 !