Sobes.tech
Middle+

რა არის ხიდი 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 <=> 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-ის შორის არის ნაწილი საერთო სტრატეგიის, რომელიც უზრუნველყოფს Swift-ის და legacy Objective-C/C კოდის თავსებადობას. ეს მნიშვნელოვნად ამარტივებს Swift-ის ახალი კოდის მიგრაციას და ინტეგრაციას არსებული პროექტებში.