Sobes.tech
Middle+

Čo je most medzi Toll-free a Swift?

sobes.tech AI

Odpoveď od AI

Most medzi Toll-free a Swift je mechanizmus, ktorý umožňuje používať niektoré typy Foundation (z Objective-C), ktoré sú "Toll-free bridged" s ich ekvivalentmi v Core Foundation (z C), priamo v Swift, a naopak, bez explicitného vytvárania nových objektov alebo konverzií. To zabezpečuje interoperabilitu medzi Swift a staršími frameworkmi v Objective-C/C, z ktorých mnohé používajú Core Foundation.

Toll-free bridging znamená, že môžete voľne prenášať inštancie jedného typu tam, kde sa očakáva inštancia iného typu, a naopak, bez dodatočných nákladov na vytvorenie nového objektu. V kontexte Swift sa to týka niektorých typov Foundation, ako sú NSString, NSArray, NSDictionary, NSDate, ktoré môžu byť použité ako ich ekvivalenty v Swift: String, Array, Dictionary, Date.

Príklady Toll-free bridged typov:

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

Swift "automaticky" vykonáva tento most pri interakcii s API napísanými v Objective-C, čo robí kód čistejším a pohodlnejším.

import Foundation // Zahrňuje Foundation a umožňuje používanie NS typov

let nsString: NSString = "Ahoj od Swift" // Objekt NSString
let swiftString: String = nsString as String // NSString sa automaticky konvertuje na String

let swiftArray: [Int] = [1, 2, 3] // Swift pole
let nsArray: NSArray = swiftArray as NSArray // Swift pole sa automaticky konvertuje na NSArray

// Príklad použitia NSString v funkcii, ktorá očakáva String (a naopak)
func printString(_ str: String) {
    print(str)
}

printString(nsString as String) // Odovzdávame NSString, očakáva sa String

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

printNSString(swiftString as NSString) // Odovzdávame String, očakáva sa NSString

Most medzi Toll-free a Swift je súčasťou všeobecnej stratégie Apple na zabezpečenie kompatibility medzi Swift a legacy kódom v Objective-C a C. Výrazne uľahčuje migráciu a integráciu nového Swift kódu do existujúcich projektov.