Nasıl kurarım NSZombieEnabled
ve CFZombieLevel
Xcode 4 benim yürütülebilir için?
Nasıl kurarım NSZombieEnabled
ve CFZombieLevel
Xcode 4 benim yürütülebilir için?
Yanıtlar:
Xcode 4.x'te
(veya tıklama Menubar
> Product
> Scheme
> Edit Scheme
)
"Teşhis" sekmesini seçin ve "Zombi Nesnelerini Etkinleştir" i tıklayın:
Bu, serbest bırakılan nesneleri tekrar kullanıldığında konsol uyarılarını yazdıran NSZombie örneklerine dönüştürür. Bu, bellek kullanımını artıran (hiçbir nesne gerçekten serbest bırakılmayan) ancak hata raporlamayı geliştiren bir hata ayıklama yardımcısıdır.
Tipik bir durum, bir nesneyi aşırı serbest bıraktığınızda hangisini bilmediğinizdir:
-[UITableView release]: message sent to deallocated instance
Uygulamayı App Store gönderimi için arşivlediğinizde bu Xcode ayarı yok sayılır. Başvurunuzu bırakmadan önce hiçbir şeye dokunmanıza gerek yoktur.
Basma ⌥⌘R, Alttuşu basılı tutarken Ürün> Çalıştır'ı seçmekle aynıdır .
"Zombi Nesnelerini Etkinleştir" onay kutusunu tıklamak, Bağımsız Değişkenler sekmesinin "Ortam Değişkenleri" bölümüne manuel olarak "NSZombieEnabled = YES" eklemekle aynıdır.
CMD-<
( CMD-SHIFT-comma
) veyaProduct -> Scheme -> Edit SCheme...
Jano'nun cevabı, onu bulmanın en kolay yoludur .. Şema açılır çubuğuna -> şemayı düzenle -> bağımsız değişkenler sekmesine tıkladıktan sonra Çevre Değişkenleri sütununda NSZombieEnabled ve değer sütununa EVET eklerseniz başka bir yol olurdu ...
Bu alternatifi daha uygun buluyorum:
Profile
Zombies
Bir zombi tespit edilir edilmez, söz konusu nesnenin ne zaman tahsis edildiğini ve nerede tutulduğunu veya serbest bırakıldığını gösteren düzgün bir "Zombi Yığını" elde edersiniz:
Event Type RefCt Responsible Caller
Malloc 1 -[MyViewController loadData:]
Retain 2 -[MyDataManager initWithBaseURL:]
Release 1 -[MyDataManager initWithBaseURL:]
Release 0 -[MyViewController loadData:]
Zombie -1 -[MyService prepareURLReuqest]
Xcode Şemalarının tanılama sekmesini kullanmaya kıyasla avantajları :
Tanılama sekmesindeki seçeneğin işaretini kaldırmayı unutursanız, bellekten hiçbir nesne bırakılmaz.
Bozuk nesnenizin hangi yöntemlerle ayrıldığını / serbest bırakıldığını veya tutulduğunu gösteren daha ayrıntılı bir yığın elde edersiniz.
iOS Simulator > All
Ana şablon listesinden seçim yaptığınızdan emin olun (Bunu sadece simülatörde yapabilirsiniz)
Xcode 4.2'de
veya seçmek Edit Scheme
dan Product
> Scheme
Menü
seçmek Enable Zombie Objects
oluşturan Diagnostics
sekmesini
Alternatif olarak, .xcconfig
dosyaları tercih ederseniz bu makaleyi okuyabilirsiniz https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/
Kakao, bu tür hata ayıklama yeteneklerinizi büyük ölçüde artıran harika bir özellik sunar. Bu NSZombieEnabled denir bir ortam değişkeni, bu seyretmek videoyu objektif-C NSZombieEnabled kurma açıklar
Xcode> 4.3'te:
Şema açılır çubuğuna -> şemayı düzenle -> bağımsız değişkenler sekmesine tıklayın ve ardından Ortam Değişkenleri sütununda NSZombieEnabled ve değer sütununa YES ekleyin.
İyi şanslar !!!