İçeriğe geç

Swift ile Avoiding retain cycles

Merhabalar bu yazımda Swift dilinin önemli konularından Avoiding retain cycles işlemlerini nasıl gerçekleştirebileceğinizi göstereceğim.

ARC (Automatic Reference Counting) işlemleri Swift dilinde doğru uygulandığı zaman hafıza sızıntı işlemlerinin önüne geçer. iOS geliştirici olarak bu işlemlere Sınıf yapılarımızda özen göstererek yazmamız, daha kaliteli ve uzun ömürlü uygulamalar oluşturmamızda birer basamak oluşturur. Swift Modern dili hali hazırda değişkenleri hafızadan boşaltma işlemi gerçekleştirir ancak bazı durumlarda doğru kullanım yaparak hafızadan atılma işlemine yardımcı olmamız gerekir.

Şimdi örnekelere geçelim bakalım bu işlemleri nasıl gerçekleştireceğiz.

Yukarıdaki gördüğünüz gibi sınıflar bir birlerini çağırıp kullanmışlar. Bu tür işlemlerde sınıfın deinit olması için işlem gören değişken ve closure yapıları iyi irdelenmelidir. Burada B sınıfını serbest bırakmamız için a değişkenini unowned (sahipsiz) olarak tanımladığımız zaman retain cycle üzerinde reference counting işlemi yapmaz. Bunun yanı sıra optional olma durumlarında weak (zayif) ön ekinide kullanabilirsiniz.

Çokça kullandığımız closures üzerindede bu işlemleri duruma göre gerçekleştirmemiz gerekli.

Bu örnektede void completion bir closure içerisinde sınıfa bağlı değişken üzerinde bir değişiklik işlemine girişilmiş. Bundan dolayı reference counting işlemi başlamış. Bundan dolayı eğer closure içerisinde bağlı değişkeni unowned hale getirmeyi sağlamazsak. Sınıfımız Deinit işlemi  gerçekleşmiyecektir.

Not: Weak, Unowned ön eklerini sadece Class tipleri ve Protocol tipleri ile birlikte kullanabiliriz. Yukardaki örnekte counter değişkenine bu ön eklerden ekleyemeyiz.

 

 

Tarih:SwiftSwift 4

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

© 2019 Kenan Atmaca