Τι είναι μια γέφυρα μεταξύ Toll-free και Swift;
sobes.tech AI
Απάντηση από AI
Ο διάδρομος μεταξύ Toll-free και Swift είναι ένας μηχανισμός που επιτρέπει τη χρήση ορισμένων τύπων Foundation (από Objective-C), που είναι "Toll-free bridged" με τους αντίστοιχους τους στην Core Foundation (από C), άμεσα στο Swift, και το αντίστροφο, χωρίς την ανάγκη δημιουργίας νέων αντικειμένων ή μετατροπών. Αυτό διασφαλίζει τη διαλειτουργικότητα μεταξύ Swift και παλαιότερων πλαισίων Objective-C/C, πολλά από τα οποία χρησιμοποιούν το Core Foundation.
Ο Toll-free bridging σημαίνει ότι μπορείτε ελεύθερα να μεταβιβάζετε στιγμιότυπα ενός τύπου σε μέρη όπου αναμένεται ένα στιγμιότυπο άλλου τύπου, και το αντίστροφο, χωρίς πρόσθετα έξοδα για τη δημιουργία νέου αντικειμένου. Στο πλαίσιο του Swift, αυτό ισχύει για ορισμένους τύπους Foundation, όπως NSString, NSArray, NSDictionary, NSDate, που μπορούν να χρησιμοποιηθούν ως οι αντίστοιχοί τους στο Swift: String, Array, Dictionary, Date.
Παραδείγματα τύπων Toll-free bridged:
CFStringRef<=>NSString<=>StringCFArrayRef<=>NSArray<=>ArrayCFDictionaryRef<=>NSDictionary<=>DictionaryCFDateRef<=>NSDate<=>Date
Ο Swift πραγματοποιεί "αυτόματα" αυτό το γεφύρωμα κατά την αλληλεπίδραση με API γραμμένα σε Objective-C, καθιστώντας τον κώδικα πιο καθαρό και πιο βολικό.
import Foundation // Περιλαμβάνει το Foundation και επιτρέπει τη χρήση τύπων NS
let nsString: NSString = "Γειά από Swift" // Αντικείμενο NSString
let swiftString: String = nsString as String // Το NSString μετατρέπεται αυτόματα σε String
let swiftArray: [Int] = [1, 2, 3] // Swift πίνακας
let nsArray: NSArray = swiftArray as NSArray // Ο Swift πίνακας μετατρέπεται αυτόματα σε NSArray
// Παράδειγμα χρήσης του NSString σε μια συνάρτηση που αναμένει String (και το αντίστροφο)
func printString(_ str: String) {
print(str)
}
printString(nsString as String) // Μεταβίβαση NSString, αναμένει String
func printNSString(_ nsStr: NSString) {
print(nsStr)
}
printNSString(swiftString as NSString) // Μεταβίβαση String, αναμένει NSString
Ο διάδρομος μεταξύ Toll-free και Swift αποτελεί μέρος της γενικής στρατηγικής της Apple για την εξασφάλιση συμβατότητας μεταξύ Swift και legacy κώδικα σε Objective-C και C. Διευκολύνει σημαντικά τη μετανάστευση και την ενσωμάτωση νέου κώδικα Swift σε υπάρχοντα έργα.