Ce este o punte între Toll-free și Swift?
sobes.tech AI
Răspuns de la AI
Podul dintre Toll-free și Swift este un mecanism care permite utilizarea anumitor tipuri de Foundation (din Objective-C), care sunt "Toll-free bridged" cu omologii lor din Core Foundation (din C), direct în Swift, și vice versa, fără a crea obiecte noi explicite sau a face conversii. Acest lucru asigură interoperabilitatea între Swift și vechile framework-uri Objective-C/C, multe dintre acestea folosind Core Foundation.
Toll-free bridging înseamnă că poți transfera liber instanțe ale unui tip acolo unde se așteaptă o instanță a altui tip, și vice versa, fără costuri suplimentare pentru crearea unui nou obiect. În contextul Swift, acest lucru se aplică anumitor tipuri de Foundation, precum NSString, NSArray, NSDictionary, NSDate, care pot fi folosite ca omologii lor în Swift: String, Array, Dictionary, Date.
Exemple de tipuri Toll-free bridged:
CFStringRef<=>NSString<=>StringCFArrayRef<=>NSArray<=>ArrayCFDictionaryRef<=>NSDictionary<=>DictionaryCFDateRef<=>NSDate<=>Date
Swift realizează "automat" această punte la interacțiunea cu API-urile scrise în Objective-C, ceea ce face ca codul să fie mai curat și mai comod.
import Foundation // Include Foundation și permite utilizarea tipurilor NS
let nsString: NSString = "Salut din Swift" // Obiect NSString
let swiftString: String = nsString as String // NSString se convertește automat în String
let swiftArray: [Int] = [1, 2, 3] // Array Swift
let nsArray: NSArray = swiftArray as NSArray // Array Swift se convertește automat în NSArray
// Exemplu de utilizare a NSString într-o funcție care așteaptă un String (și invers)
func printString(_ str: String) {
print(str)
}
printString(nsString as String) // Transmitere NSString, se așteaptă String
func printNSString(_ nsStr: NSString) {
print(nsStr)
}
printNSString(swiftString as NSString) // Transmitere String, se așteaptă NSString
Podul dintre Toll-free și Swift face parte din strategia generală a Apple de a asigura compatibilitatea între Swift și codul legacy în Objective-C și C. Acesta facilitează migrația și integrarea noului cod Swift în proiecte existente.