Sobes.tech
Junior — Middle

Milyen lépéseket kell követni egy objektum vagy erőforrás helyes megsemmisítéséhez?

sobes.tech MI

Válasz az MI-től

Az iOS-ban egy objektum helyes megsemmisítése vagy erőforrások felszabadítása érdekében a következő lépéseket kell követni:

  1. Kapcsolódó erőforrások felszabadítása — például fájlok bezárása, időzítők leállítása, hálózati kérések megszakítása.
  2. Figyelők és értesítések eltávolítása — ha az objektum feliratkozott értesítésekre vagy KVO-ra, le kell iratkozni, hogy elkerüljük a memória szivárgásokat.
  3. Erős hivatkozások nullázása — ha ciklikus hivatkozások vannak, azokat megszakítva az ARC szabadon tudja felszabadítani a memóriát.
  4. Tisztítás végrehajtása a deinit módszerben — Swift-ben a deinit destruktor végrehajtja az utolsó műveleteket az objektum megsemmisítése előtt.

Példa:

class MyResource {
    var timer: Timer?

    init() {
        timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
            print("Tick")
        }
        NotificationCenter.default.addObserver(self, selector: #selector(handleNotification), name: .someNotification, object: nil)
    }

    @objc func handleNotification() {
        // feldolgozás
    }

    deinit {
        timer?.invalidate()
        NotificationCenter.default.removeObserver(self)
        print("MyResource megsemmisült")
    }
}

Így a helyes megsemmisítés biztosítja az erőforrások felszabadítását és megakadályozza a memória szivárgásokat.