XCode Üzerinde Memory Adresleri Hakkında Daha Çok Bilgi Alma

Merhaba arkadaşlar,

Bilindiği üzere Objective C ile programlama yaparken memory yönetimi çok önem taşımakta. EXC_BAD_ACCESS gibi hataları alabilir hatta çözebilmek için bayağı efor sarfedebiliriz. Bu gibi sorunların üstesinden gelebilmek için IDE ortamı için bazı bileşenleri devreye sokmamız gerekmektedir. Öncelikle EXC_BAD_ACCESS sorunu sıkça karşılaşabileceğimiz bir memory sorunu.

Peki bu sorun nedir ? Öncelikle buna açıklık getirmeye çalışalım. Bunun anlamı daha önce release edilmiş bir obje üzerinden fonksiyon çağırmaya çalışıyoruz demek olabilir. En azından benim karşılaştığım durum bu. Eğer bu sorunu detaylandırmak istiyorsak ve IDE bize daha çok bilgi versin istiyorsak NSZombieEnabled özelliğini aktif hale getirmemiz gerekmektedir. Peki bu özelliği nasıl aktif edeceğiz:

Öncelikle Product sekmesine gelelim adından Scheme kısmından Edit Scheme alanını tıklayalım. Karşımıza ayar penceresi açılacak.Aşağıdaki resim gibi ayarları yapmaya çalışalım:

zombienabled

Artık aşağıdaki gibi detaylı bir hata ile karşılaşıyoruz.

message sent to deallocated instance 0x5633b0″

Şimdi gelelim bu memory adresinin ne olduğuna ve nasıl detaylandıracağımıza:

Öncelikle şunu belirtmeliyim, daha ileriye gitmek istemiyorsanız belirlemeleri kod tarafında yapabilirsiniz yani memory adresinin hangi referansa ait olduğunu kendi belirlediğiniz annotationlar ile deneme yanılma yoluyla bulabilirsiniz. Bunun için Custom init fonksiyonlarına şu kodu yerleştirmemiz yeterli ve her initialization anında memory adresleri promt’a listelenecektir.

Referans1 yerine eklemek istediğimiz notu yazabiliriz ve 0x5633b0 adresi ile karşılaştırmamızı yapabiliriz. Eğer daha da ileri gitmek istiyorsak Aynı pencere’den Diagnostics sekmesine tıklıyoruz ve Enable Guard Malloc kısmının işaretli olduğuna emin oluyoruz. Hepsi bu kadar 🙂

İyi Çalışmalar Dilerim.

 

Bu yazı iOS Programlama, Yazılarım kategorisine gönderilmiş ve , , , , ile etiketlenmiş. Kalıcı bağlantıyı yer imlerinize ekleyin.

Bir cevap yazın

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