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