Sobes.tech
Junior — Middle

სტრუქტურას ან კლასს აქვს რესურსების გასაწმენდად მეთოდი ან დესტრუქტორი?

sobes.tech AI

პასუხი AI-სგან

Swift-ში სტრუქტურებს (struct) დესტრუქტორი არ აქვთ, რადგან ისინი მნიშვნელობის ტიპები არიან და ავტომატურად მართვადია. კლასებს (class) კი, შეუძლიათ ჰქონდეთ დესტრუქტორი — მეთოდი deinit, რომელიც იძახება წინასწარ კლასი მეხსიერებიდან გამოთავისუფლებისას. დესტრუქტორში ჩვეულებრივ, რესურსები თავისუფლდება, ფაილები იხურება, გამოწერები გაუქმდება და ა.შ.

კლასის დესტრუქტორის მაგალითი:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("ფაილი გახსნილია \(fileName)")
    }

    deinit {
        print("ფაილი დაიხურა \(fileName)")
    }
}

var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // გამოიძახება deinit

ამიტომ, მხოლოდ კლასებს აქვთ deinit დესტრუქტორი, სტრუქტურებს — არა.