Sobes.tech
Middle+

Toll-free жана Swift ортосунда көпүрө эмне?

sobes.tech AI

AIден жооп

Toll-free жана Swift ортосундагы көпүрө — бул механизми, ал Objective-Cден алынган кайсы бир түрлөрүн колдонууга мүмкүндүк берет, алар "Toll-free bridged" болуп саналат жана алардын Core Foundation (Cден) аналогдору менен түздөн-түз Swiftте жана тескерисинче, жаңы объекттерди түзбөстөн же конвертация жасабастан. Бул Swift жана Objective-C/C эски фреймворкторунун ортосунда интерабелликти камсыздайт, алардын көпчүлүгү Core Foundation колдонушат.

Toll-free көпүрө дегенде, сиз бир түрдүн экземплярларын эркин өткөрө аласыз, экинчи түрдүн күтүлүп жаткан жеринде, жана тескерисинче, жаңы объект түзүү чыгымдарына карабастан. Swift контекстинде бул NSString, NSArray, NSDictionary, NSDate сыяктуу белгилүү бир Foundation түрлөрүнө таралат, алар Swiftте алардын аналогдору катары колдонулушу мүмкүн: String, Array, Dictionary, Date.

Toll-free көпүрө түрлөрүнүн мисалдары:

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

Swift "автоматтык" түрдө Objective-C API менен иштөөдө бул көпүрөнү ишке ашырат, бул кодду таза жана ыңгайлуу кылат.

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 кодуңуздун мурунку долбоорлорго оңой көчүрүлүшүн жана интеграциялануусун жеңилдетет.