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 դեստրուկտոր, կառուցվածքները՝ ոչ։