Swift ARC

Merhaba arkadaşlar, bu yazımızda Swift’te hafıza yönetimi nasıl yapılır bundan bahsedeceğiz. Hafıza yönetimi nasıl yapılacağı mobil programlama konusunda oldukça önem taşıyan bir konu. Her geçen gün iOS cihazlarda RAM’in artmasına karşın eski cihazlara verilmesi gereken destek ve her geçen gün gelişen farklı teknolojiler ile kullanılan RAM miktarının artmasıyla hafıza yönetiminin önemi her geçen gün artmakta.

Swift ile geliştirdiğimiz uygulamalarda ARC( Automatic Reference Counter) ile otomatik bir şekilde kullanılmayan objeleri otomatik olarak hafızadan siler. Tabi bunu yapabilmesi için bizim de buna uygun bir şekilde değişkenleri tanımlamamız gerekir. Aksi takdirde hiç istemeyeceğimiz Memory Leak oluşacaktır. Memory Leak‘i kısaca tanımlayacak olursak; kullanılmayan ve kullanılmayacak objelerin hafızada yer kaplamasıdır.

Değişken oluştururken arkada ARC’nin oluşturulan değişkenler için referans saydığını unutmayın. Buna göre değişkenlerinizi oluşturun. Burada tabi her obje için bu durum aynı değildir. Bildiğiniz için değişkenler aslında 2 tiplidir. Bunlar referans tipli ve değer tiplidir. Bunların hafızada tutulduğu yerler vs bir çok farklı özelliği vardır. Daha detaylı yazıma buradan ulaşabilirsiniz. ARC ise sadece referans tipli olan değişkenleri sayar.

Referans tipli bir değişken oluşturduğumuzda bunun referans sayısı 1 olur. Başka bir sayfadaki değişkene bu oluşturduğumuz değişkeni atarsak, oluşturduğumuz değişkeni referans sayısı 2 olacaktır. Bu sayı 0 olana kadar oluşturduğumuz obje hafızada her zaman yer kaplayacaktır. Burada bunu engellemek için değişkenleri tanımlarken strong, weak ve unowned tiplerini tanımlayabiliriz.

Strong

Referans tipli bir değişken oluşturduğumuzda varsayılan olarak gelir. Referans sayısını 1 arttırır.

Weak

Referans tipli bir değişken weak olarak tanımlanırsa referans numarası artmaz. Bunun sayesinde, bulunduğu sınıf hafızadan silinirse değişken de silinir.

Unowned

Weak ile hemen hemen aynıdır. Aralarındaki fark owned tanımlanmış bir obje nil set edilemez. Bu değişkeni oluşturduğumuz sırada bir değer set etmeliyiz.

 

Daha detaylı bilgi almak için Swift’in kendi dökümanından yararlanabilirsiniz. Sorularınız olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.

Leave a Comment

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.