Sobes.tech
Junior — Middle

Vai struktūrai vai klasei ir resursu tīrīšanas metode vai destruktors?

sobes.tech AI

Atbilde no AI

Swift struktūrām (struct) nav destruktora, jo tās ir vērtību tipi un tiek automātiski pārvaldītas. Klases (class) var būt ar destruktoru — metodi deinit, kas tiek izsaukts pirms objekta atbrīvošanas no atmiņas. Parasti destruktorā tiek atbrīvoti resursi, aizver faili, atceļ abonementus utt.

Piemērs ar klasi un destruktoru:

class FileHandler {
    let fileName: String

    init(fileName: String) {
        self.fileName = fileName
        print("Fails atvērts \(fileName)")
    }

    deinit {
        print("Fails aizvērts \(fileName)")
    }
}

var handler: FileHandler? = FileHandler(fileName: "data.txt")
handler = nil // izsauks deinit

Tādēļ tikai klases ir ar destruktoru deinit, struktūras — nē.