RSS Utilise ta miche - Nouvell... Note

Fil de notes

Swift 6.2 introduit un contrôle plus fin des avertissements du compilateur dans les paquets Swift. Auparavant, Xcode permettait de traiter tous les avertissements comme des erreurs ou de supprimer tous les avertissements via des drapeaux personnalisés. Cependant, Swift 6.1 a introduit des options permettant de traiter des groupes de diagnostics spécifiques comme des avertissements ou des erreurs, tels que "-Werror DeprecatedDeclaration". Il est important de noter que ces contrôles granulaires n'ont pas été pris en charge dans les paquets Swift avant Swift 6.2.Pour utiliser ces nouvelles fonctionnalités, les développeurs doivent mettre à jour la version 6.2 de leurs outils Swift dans le fichier Package.swift. Swift 6.2 propose de nouveaux swiftSettings comme treatAllWarnings(as :) et treatWarning("group", as :). Ces réglages permettent une configuration précise, par exemple, traiter tous les avertissements comme des erreurs à l'exception d'un groupe spécifique comme "DeprecatedDeclaration". Il est important de noter que ces paramètres de contrôle des avertissements ne s'appliquent que lorsqu'un paquet est construit directement et sont ignorés lorsqu'ils sont utilisés en tant que dépendance distante. Les développeurs peuvent appliquer ces contrôles à toutes les cibles d'un paquet en itérant à travers les cibles et en ajoutant les paramètres désirés à leur swiftSettings. Cette amélioration offre une plus grande flexibilité dans la gestion des avertissements et des erreurs au moment de la construction.
CdXz5zHNQW_5ZPzFJEMHm.png
Swift 6.2 introduit un nouveau type Observations pour streamer les changements d'état des types Observable. Ceci est utile pour persister l'état de l'application, comme la requête de recherche d'une scène et son chemin de navigation. L'auteur gérait précédemment cet état dans une classe Codable, SceneModel, qui pouvait être encodée en JSON pour la persistance.Ce SceneModel était ensuite sauvegardé et restauré à l'aide de @SceneStorage dans la vue racine. Cependant, la sauvegarde de l'état reposait sur la surveillance de scenePhase, ce qui n'était pas fiable car les scènes pouvaient se terminer avant d'entrer en arrière-plan. Avant Swift 6.2, ObservableObject avec les propriétés @Published permettait d'utiliser buffer et values de Combine pour créer un AsyncSequence pour sauvegarder les changements d'état.Avec iOS 26 et Swift 6.2, le type Observations fournit un AsyncSequence similaire pour les types Observable. Cela permet d'observer les propriétés calculées, telles que la représentation JSON du SceneModel. Le type Observations prend une closure qui retourne la valeur à observer.Les changements sont transactionnels, ce qui signifie que plusieurs mises à jour synchrones des propriétés observables sont groupées en une seule valeur de séquence. Le suivi des mises à jour commence avec le willSet des propriétés observables et se termine au prochain point de suspension. Cela permet de sauvegarder l'état du modèle de scène automatiquement à chaque changement, sans dépendre de scenePhase. L'AsyncSequence de Observations émet la valeur initiale de la propriété observée lors de la souscription.
CdXz5zHNQW_BQHW5Oy3tB.png
Icon Composer est un nouvel outil dans Xcode 26 qui aide à créer des icônes pour le système de design Liquid Glass. Pour utiliser Icon Composer, concevez les couches de premier plan de votre icône dans un outil de design préféré, exportez-les en tant que couches SVG entièrement opaques, et importez-les dans Icon Composer. Dans Icon Composer, ajoutez l'arrière-plan, ajustez les tailles et les positions des couches, définissez l'opacité, la couleur, les dégradés, les ombres et les effets de verre. Xcode utilise le fichier .icon unique pour générer toutes les variantes d'icônes pour les plates-formes prises en charge. Pour ajouter des icônes à un projet Xcode, faites glisser le fichier .icon dans la barre latérale du navigateur de projet. Une fois ajouté, vous pouvez ouvrir et éditer le fichier d'icône dans Icon Composer directement à partir de Xcode. Assurez-vous que le nom de l'ensemble d'icônes de l'application dans les paramètres de la cible correspond au nom du fichier d'icône Icon Composer sans l'extension .icon. Malheureusement, Icon Composer ne prend pas en charge les icônes d'application alternatives, et vous devez exporter et ajouter manuellement des fichiers d'image au catalogue d'actifs. Cela réduit l'utilité d'Icon Composer pour les icônes d'application alternatives. Apple fournit des ressources, notamment les lignes directrices de l'interface utilisateur et les vidéos de la WWDC, pour en savoir plus sur Icon Composer et la conception d'icônes d'application.
CdXz5zHNQW_9KktMjMyKW.png
Apple a introduit TipKit dans iOS 17 pour afficher des conseils contextuels aux utilisateurs, et il assure le suivi de la fréquence des conseils et des événements de contrôle. Dans iOS 18, vous pouvez synchroniser l'état de TipKit en utilisant CloudKit pour éviter d'afficher les mêmes conseils sur chaque appareil. Pour activer la synchronisation CloudKit, sélectionnez la cible de votre application dans Xcode, ajoutez la fonctionnalité iCloud et sélectionnez CloudKit. Ensuite, ajoutez un identifiant de conteneur se terminant par ".tips" et activez la fonctionnalité Modes d'arrière-plan avec les notifications à distance. TipKit ne se synchronise pas par défaut avec CloudKit, vous devez donc activer le conteneur CloudKit lors de la configuration du magasin de données Tips. Vous pouvez utiliser l'option .automatic ou passer un identifiant spécifique pour configurer le conteneur CloudKit. Soyez prudent lorsque vous synchronisez une base de données Core Data/SwiftData avec CloudKit, car elle peut utiliser le mauvais identifiant de conteneur. Apple recommande d'utiliser un conteneur séparé pour la synchronisation des conseils, et vous pouvez lister votre identifiant Core Data/SwiftData en premier dans le fichier des droits ou le définir explicitement avant de charger le magasin persistant. La synchronisation de TipKit avec CloudKit a été introduite lors de la WWDC24. De plus, un livre sur le Modern Auto Layout est disponible à prix réduit pendant les soldes de la WWDC25.
CdXz5zHNQW_StQr2PuKiZ.png
L'article explique comment créer des styles personnalisés pour les boutons et les étiquettes SwiftUI, notamment un style d'étiquette adaptatif qui bascule vers une disposition verticale pour les classes de taille horizontale compactes, et un style de bouton en capsule personnalisé avec une capsule jaune pleine et une police monospace. Ces styles peuvent être appliqués aux vues à l'aide des modificateurs .labelStyle et .buttonStyle. Cependant, il est moins courant de créer des extensions de commodité sur LabelStyle ou ButtonStyle, ce qui permettrait une forme plus compacte du modificateur. Pour y parvenir, l'article suggère d'étendre ButtonStyle et LabelStyle, de manière similaire à la façon dont Apple définit les styles intégrés. Cela implique l'ajout d'une propriété ou d'une fonction statique à l'extension qui renvoie une instance du style personnalisé. Par exemple, le style de bouton en capsule peut être étendu avec une propriété statique capsule qui renvoie une instance de CapsuleButtonStyle. Cela permet d'appliquer le style en utilisant la forme compacte .buttonStyle(.capsule). Si le style personnalisé possède des paramètres, comme une couleur configurable, l'extension peut être modifiée pour inclure une fonction qui prend le paramètre et renvoie une instance du style personnalisé. Cela permet d'appliquer le style avec le paramètre, par exemple .buttonStyle(.capsule(.orange)). L'article fournit des exemples de la manière d'étendre ButtonStyle et LabelStyle pour créer des styles personnalisés pratiques.
Apple a introduit Swift Testing à la WWDC24, ce qui permet de transmettre des arguments à une fonction de test en utilisant le paramètre arguments de la macro @Test. Cette fonctionnalité active les tests paramétrés, où la fonction de test est appelée une fois pour chaque valeur dans la collection d'arguments. Le navigateur de test affiche les résultats de chaque exécution de test. Si deux arguments sont transmis, Swift Testing génère des cas de test pour toutes les combinaisons des deux arguments. Cependant, il y a une limite de deux arguments maximum, et si toutes les combinaisons ne sont pas nécessaires, les arguments peuvent être zippés pour les appairer. Cette fonctionnalité est utile pour tester une collection d'arguments d'entrée qui attendent le même résultat. Elle peut être particulièrement pratique lors de l'utilisation d'une énumération CaseIterable pour mener les tests. L'auteur a trouvé cette fonctionnalité utile lors de la migration de tests unitaires basés sur XCTest vers Swift Testing, en particulier lors de la vérification d'attributs des classes d'objets gérés de Core Data. L'approche Swift Testing présente des avantages par rapport à l'utilisation d'une boucle for, notamment des cas de test indépendants qui peuvent s'exécuter en parallèle et une notification des échecs plus claire. Dans l'ensemble, les tests paramétrés dans Swift Testing peuvent simplifier et combiner des tests, ce qui en fait une fonctionnalité utile en pratique.
Le framework de test Swift est un framework de test open-source conçu pour Swift, introduit par Apple lors de la WWDC24 et livré avec Xcode 16. Il utilise des fonctionnalités modernes comme la concurrence et les macros, et prend en charge Windows et Linux, ainsi que les plates-formes d'Apple. Il n'y a pas de raison urgente de migrer de XCTest, mais Swift Testing offre plusieurs avantages, notamment la possibilité d'exécuter des tests en processeur à l'aide de la concurrence Swift, ce qui permet des tests parallèles sur des appareils physiques.Pour commencer avec Swift Testing, vous pouvez mélanger des tests unitaires XCTest et Swift Testing dans une cible de test, mais vous ne devriez pas mélanger les frameworks de test dans un test. Vous pouvez importer le framework de test Swift en ajoutant "import Testing" à votre fichier de test. Apple recommande de grouper les tests en les ajoutant à un type, comme une structure ou une classe, et d'utiliser la méthode init pour la mise en place et la démolition.Les tests Swift Testing sont des méthodes Swift normales qui deviennent des tests unitaires lorsque vous ajoutez le macro @Test. Vous pouvez marquer les méthodes de test avec async ou throws et les isoler à un acteur si nécessaire. L'attribut @Test est un macro qui peut être développé pour voir l'implémentation.Swift Testing utilise les macros #expect et #require pour les assertions, qui offrent plus de flexibilité et des messages d'erreur plus informatifs que les XCTAssert de XCTest. Le macro #expect enregistre les attentes échouées et continue le test, tandis que le macro #require est une version qui lance une erreur et arrête l'exécution du test en cas d'erreur.Vous pouvez également utiliser Issue.record pour faire échouer un test sans évaluer une condition, similaire à XCTFail dans XCTest. Dans l'ensemble, Swift Testing offre plusieurs avantages par rapport à XCTest, notamment une prise en charge améliorée de la concurrence et des assertions plus flexibles.
Dans iOS 18, Apple a introduit un paramètre facultatif isEnabled à divers modificateurs d'accessibilité dans SwiftUI. Ce paramètre permet aux développeurs d'appliquer conditionnellement des modificateurs d'accessibilité en fonction de conditions spécifiques. Le paramètre isEnabled est disponible pour les modificateurs tels que .accessibilityLabel, .accessibilityInputLabels, .accessibilityValue et .accessibilityHint. Cette fonctionnalité est utile lorsque les développeurs ont besoin de remplacer le comportement d'accessibilité par défaut conditionnellement. Par exemple, dans une liste d'éléments avec un bouton pour basculer le statut de favori, le libellé d'accessibilité par défaut pour l'action du bouton peut être modifié en fonction du statut de favori. Au lieu de fournir un libellé d'accessibilité conditionnel, les développeurs peuvent utiliser la variante isEnabled du modificateur pour appliquer un libellé personnalisé uniquement lorsqu'une condition spécifique est remplie. Cette approche évite de répéter et de localiser le libellé par défaut. Dans l'exemple fourni, le modificateur .accessibilityLabel est utilisé avec le paramètre isEnabled pour appliquer un libellé personnalisé "Désactiver les favoris" uniquement lorsque l'élément est favori. Il s'agit d'une petite amélioration qui simplifie le code et réduit les efforts de localisation. L'introduction du paramètre isEnabled dans iOS 18 améliore la flexibilité des modificateurs d'accessibilité dans SwiftUI.
La gamme iPhone 16 dévoilée : des écrans plus grands, des fonctionnalités améliorées et un design raffinéApple a dévoilé la gamme iPhone 16, mettant fin à la production des modèles iPhone 15 Pro et étendant la série iPhone 16 de base avec des fonctionnalités améliorées. Les modèles Pro voient leurs écrans s'agrandir, avec l'iPhone 16 Pro doté d'un écran de 6,3 pouces et l'iPhone 16 Pro Max arborant un écran de 6,9 pouces. Malgré leurs écrans plus grands, les modèles Pro conservent leur format compact grâce à des bordures réduites. Tous les modèles sont désormais équipés des boutons Action et Contrôle de l'appareil photo, ainsi que de la puce A18. Les modèles iPhone 16 de base conservent leurs tailles d'écran mais restent dépourvus de ProMotion et de l'affichage permanent, tout en conservant le boîtier en aluminium. L'iPhone 16 Plus partage les mêmes spécifications que l'iPhone 16 mais avec un écran plus grand et une autonomie améliorée. Les modèles Pro continuent d'offrir des fonctionnalités exclusives comme la prise en charge USB-3, l'affichage ProMotion et l'affichage permanent, ainsi que le boîtier en titane. Malgré les écrans plus grands, les modèles Pro ont des dimensions légèrement plus importantes que leurs prédécesseurs. App Store Connect simplifie désormais le processus en ne nécessitant qu'un seul ensemble de captures d'écran pour l'iPhone, qui peuvent être destinées à l'écran de 6,9 pouces ou de 6,5 pouces. Globalement, la série iPhone 16 apporte des améliorations progressives avec des écrans plus grands, des fonctionnalités améliorées et un design raffiné.