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:
- 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.
- 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.
- 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.
- Tisztítás végrehajtása a
deinitmódszerben — Swift-ben adeinitdestruktor 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.