Sobes.tech
Middle+

Mi az a híd a Toll-free és a Swift között?

sobes.tech MI

Válasz az MI-től

A Toll-free és Swift közötti híd egy olyan mechanizmus, amely lehetővé teszi bizonyos Foundation típusok (Objective-C-ből), amelyek "Toll-free bridged"-ek a Core Foundation (C-ből) megfelelőivel, közvetlenül Swiftben való használatát, és fordítva, anélkül, hogy új objektumokat kellene létrehozni vagy explicit konverziókat végezni. Ez biztosítja a Swift és a régi Objective-C/C keretrendszerek közötti interoperabilitást, amelyek közül sok a Core Foundation-t használja.

A Toll-free bridging azt jelenti, hogy szabadon átadhatja egyik típus példányát a másik típus várakozó helyére, és fordítva, anélkül, hogy extra költséget jelentene új objektum létrehozása. Swift kontextusában ez bizonyos Foundation típusokra vonatkozik, mint például NSString, NSArray, NSDictionary, NSDate, amelyek Swiftben a megfelelőiként használhatók: String, Array, Dictionary, Date.

Példák Toll-free bridged típusokra:

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

A Swift "automatikusan" végzi ezt a hidat az Objective-C-ben írt API-kkal való interakció során, ami tisztább és kényelmesebb kódot eredményez.

import Foundation // Tartalmazza a Foundation-t és lehetővé teszi az NS típusok használatát

let nsString: NSString = "Szia Swift-ből" // NSString objektum
let swiftString: String = nsString as String // Az NSString automatikusan konvertálódik String-re

let swiftArray: [Int] = [1, 2, 3] // Swift tömb
let nsArray: NSArray = swiftArray as NSArray // A Swift tömb automatikusan konvertálódik NSArray-re

// Példa az NSString használatára egy olyan függvényben, amely String-et vár (és fordítva)
func printString(_ str: String) {
    print(str)
}

printString(nsString as String) // NSString átadása, String-et vár

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

printNSString(swiftString as NSString) // String átadása, NSString-et vár

A Toll-free és Swift közötti híd része az Apple általános stratégiájának, amely biztosítja a kompatibilitást Swift és a legacy Objective-C/C kód között. Ez jelentősen megkönnyíti az új Swift kód migrációját és integrációját a meglévő projektekbe.