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