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 დესტრუქტორი, სტრუქტურებს — არა.