Swift'de Bellek Yönetimi

Swift'de bellek yönetimi nasıl çalışıyor? Bu yazımızda hep beraber bunu inceleyelim.

swift - 06-09-2020 02:20

Disk belleği Rasgele Erişim Belleği (RAM)

Peki swift yığın belleğini nasıl yönetir?

class Shop { let name: String init(name: String) { self.name = name } } override func viewDidLoad() { super.viewDidLoad() let shop = Shop(name: “Sweet Tooth”) }

Bu durumda, MyViewController kapsam dışına çıkmadığı sürece mağaza nesnesi kaldırılmayacaktır. Ancak runApp () işlevini aşağıdaki gibi tanımlarsak:

func runApp() { let shop = Shop(name: “Sweet Tooth”) }

Peki bellek sızıntıları nasıl olur?

class Cake { let name: String var soldBy: Shop? init(name:String) { self.name = name } }

Şimdi, aşağıdaki kod parçasını runApp () 'ye eklersek:

let cake = Cake(“Sweet Tooth Special Chocolate Truffle Cake”)

Bu bir Cake nesnesi yaratır. Ardından, Dükkan'a bir 'Cakes' niteliği ekleyin.

var cakes: [Cake] = [] fun sells(cake: Cake) { self.cakes.append(cake) item.soldBy = self }

 

Güçsüz? Sahipsiz?

 

Örneğimize geri dönersek ve Cake sınıfında 'soldBy' bildirimini şu şekilde değiştirin:

weak var soldBy: Shop?

Kapanmış referans döngüleri

lazy var cakeCount: () -> Int { self.cakes.count } lazy var cakeCount: () -> Int { [weak self] in self?.cakes.count }

 

Günün Diğer Haberleri