Bibliothèque standard Swift (iOS/macOS) : aperçu complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque standard Swift (iOS/macOS) : aperçu complet



La bibliothèque standard Swift est un ensemble fondamental de types, de protocoles et de fonctions intégrés directement dans le langage. Elle fournit les fonctionnalités de base nécessaires au développement pour iOS, macOS, watchOS et tvOS. Contrairement aux frameworks Foundation ou UIKit, qui font partie du SDK, la bibliothèque standard Swift est disponible immédiatement sans importations supplémentaires. Dans cet article, nous allons détailler ses composants clés, structures de données, protocoles et mécanismes de gestion de la mémoire.



Types de données et collections principaux



Swift fournit des collections puissantes et type-safe, optimisées pour les performances.



Tableaux (Array)

Collection ordonnée d'éléments du même type. Prend en charge l'accès aléatoire et le redimensionnement dynamique.

var numbers: [Int] = [1, 2, 3]numbers.append(4)let first = numbers[0] // 1numbers.sort()


Ensembles (Set)

Collection non ordonnée d'éléments uniques. Idéale pour les tests d'appartenance et les opérations mathématiques.

let setA: Set<Int> = [1, 2, 3, 4]let setB: Set<Int> = [3, 4, 5, 6]let intersection = setA.intersection(setB) // {3, 4}let union = setA.union(setB) // {1, 2, 3, 4, 5, 6}


Dictionnaires (Dictionary)

Collection non ordonnée de paires clé-valeur. Les clés doivent être hachables (Hashable).

var capitals: [String: String] = ["Russie": "Moscou", "États-Unis": "Washington"]capitals["Allemagne"] = "Berlin"if let russiaCapital = capitals["Russie"] {    print(russiaCapital) // Moscou}


Protocoles : fondement de la polyvalence de Swift



La bibliothèque standard Swift est construite sur des protocoles qui définissent une interface commune pour différents types.



  • Equatable — permet de comparer des instances avec ==.
  • Hashable — requis pour utiliser un type comme clé de dictionnaire ou élément d'ensemble.
  • Comparable — permet d'ordonner des objets (<, >, <=, >=).
  • Codable — combine Encodable et Decodable pour la sérialisation en JSON, Property List et autres formats.
  • CaseIterable — fournit automatiquement une collection de toutes les valeurs d'une énumération.


Exemple d'utilisation de Codable

struct User: Codable {    let id: Int    let name: String    let isActive: Bool}

let json = """{ "id": 42, "name": "Ivan", "isActive": true}""".data(using: .utf8)!

let decoder = JSONDecoder()if let user = try? decoder.decode(User.self, from: json) { print(user.name) // Ivan}


Gestion de la mémoire : ARC et Copy-on-Write



Swift utilise le comptage automatique de références (ARC) pour gérer la mémoire des types référencés (classes). Pour les structures et énumérations, la sémantique de copie de valeur s'applique, avec l'optimisation Copy-on-Write (COW) pour les collections.



var array1 = [1, 2, 3]var array2 = array1 // Tant qu'on ne modifie pas — données partagéesarray2.append(4)    // Ici, une copie réelle a lieu (COW)print(array1.count) // 3 — le tableau d'origine n'a pas changé


Modèles génériques (Generics)



Les Generics permettent d'écrire des fonctions et des types flexibles et réutilisables sans perte de performance.



func swapTwoValues<T>(_ a: inout T, _ b: inout T) {    let temporaryA = a    a = b    b = temporaryA}

var x = 10var y = 20swapTwoValues(&x, &y) // x = 20, y = 10


Types optionnels (Optionals)



La gestion sécurisée des valeurs absentes est l'une des caractéristiques clés de Swift. Les optionnels empêchent les exceptions de pointeur nul.



var optionalString: String? = "Bonjour"// Optional bindingif let unwrapped = optional                    

Recommendations