İOS Obj-C

Objective C ARC ve Strong – Weak Propertyler

ARC (Automatic Reference Counting)

Objective C de ARC (Automatic Reference Counting) olmadan önce, oluşturduğumuz nesneler ile işimiz bittiğinde, onları kendimiz manuel release ediyorduk. Bu  bizim hafıza yönetimini kendimiz yapmamız anlamına geliyordu. Bunu yapmadığımız taktirde, sürekli yeni nesneler oluşturup, işimiz bittiğinde onları temizlemediğimiz için hafıza şişiyor ve belli bir süre sonra yer kalmadığı için uygulamamız crash ediyordu. Artık ARC sayesinde, bunu otomatik olarak compilerımız yapıyor.

Bu metodu çağırdığımız zaman, bizim oluşturduğumuz User ve NSNumber nesneleri release etmemize gerek kalmadan işleri bitince temizlenecek.

 

Strong ve Weak Kavramları

ARC’da nesnelerimiz default  strong olarak tanımlıdır.

Strong referanslar, nesneler siz onlara nil (null) bir değer atamadığınız sürece yaşamlarını sürdürmelerini sağlar.

Weak olarak tanımlanan referans, bir nesnenin otomatik olarak nil tanımlanabileceğini söyler. Bu işlem sizin nesnenize strong bir referans olmadığı zaman yapılır.

 

Türk Telekom Şirketinde CRM Çözümlerinde Teknik Analist olarak görev yapmaktayım. Geçmişte ise iOS uygulama geliştirici olarak çalıştım. Bilginin ve paylaşmanın gücüne can-ı gönülden inanırım..
  • Şakir Şensoy

    Merhabalar. Benim bir sorum olacak. Şimdi bir class’a strong veya weak parametresi ile property eklemek arasındaki fark tam olarak nedir? Mesela:

    @property (strong, nonatomic) NSArray *dizi;

    Bu şekilde strong parametresi ile atama yaptığımızda bu referans ARC tarafından görmezdenmi geliniyor. Bellekten hiçmi düşmüyor?

    • Merhaba Şakir,

      Strong ve weak arasındaki farkı şu şekilde açıklamaya çalışayım,
      -Eğer bir nesneyi strong parametresi ile tanımlarsak,o nesne hafızadan düşmeyecektir. Ancak ve ancak biz ona bir nil değer atarsak hafızadan düşer.

      -Weak olduğu zaman, eğer o nesneyi işaret eden strong bir referans yoksa, otomatik olarak hafızadan düşecektir.(ARC kendisi otomatik olarak nil değeri atar).

      Umarım yardımcı olabilmişimdir.

      • Şakir Şensoy

        teşekkür ederim.