Sobes.tech
Middle+

Qu'est-ce qu'un pont entre Toll-free et Swift?

sobes.tech IA

Réponse de l'IA

Le pont entre Toll-free et Swift est un mécanisme permettant d’utiliser certains types de Foundation (d’Objective-C), qui sont "Toll-free bridged" avec leurs homologues dans Core Foundation (en C), directement dans Swift, et vice versa, sans création explicite de nouveaux objets ou conversion. Cela assure l’interopérabilité entre Swift et les anciens frameworks en Objective-C/C, dont beaucoup utilisent Core Foundation.

Le pont Toll-free signifie que vous pouvez transférer librement des instances d’un type à un endroit où une instance d’un autre type est attendue, et vice versa, sans coûts supplémentaires pour la création d’un nouvel objet. Dans le contexte de Swift, cela s’applique à certains types de Foundation, comme NSString, NSArray, NSDictionary, NSDate, qui peuvent être utilisés comme leurs homologues en Swift : String, Array, Dictionary, Date.

Exemples de types Toll-free bridged :

  • CFStringRef <=> NSString <=> String
  • CFArrayRef <=> NSArray <=> Array
  • CFDictionaryRef <=> NSDictionary <=> Dictionary
  • CFDateRef <=> NSDate <=> Date

Swift effectue "automatiquement" ce pont lors de l’interaction avec des API écrites en Objective-C, ce qui rend le code plus propre et plus pratique.

import Foundation // Inclut Foundation et permet d’utiliser les types NS

let nsString: NSString = "Bonjour de Swift" // Objet NSString
let swiftString: String = nsString as String // NSString est automatiquement converti en String

let swiftArray: [Int] = [1, 2, 3] // Tableau Swift
let nsArray: NSArray = swiftArray as NSArray // Tableau Swift converti automatiquement en NSArray

// Exemple d’utilisation de NSString dans une fonction qui attend un String (et vice versa)
func printString(_ str: String) {
    print(str)
}

printString(nsString as String) // Passage de NSString, qui attend un String

func printNSString(_ nsStr: NSString) {
    print(nsStr)
}

printNSString(swiftString as NSString) // Passage de String, qui attend un NSString

Le pont entre Toll-free et Swift fait partie de la stratégie globale d’Apple pour assurer la compatibilité entre Swift et le code legacy en Objective-C et C. Il facilite grandement la migration et l’intégration du nouveau code Swift dans des projets existants.