Bagaimana cara saya mengatur NSZombieEnabled
dan CFZombieLevel
untuk executable saya di Xcode 4?
Bagaimana cara saya mengatur NSZombieEnabled
dan CFZombieLevel
untuk executable saya di Xcode 4?
Jawaban:
Dalam Xcode 4.x tekan
(atau klik Menubar
> Product
> Scheme
> Edit Scheme
)
pilih tab "Diagnostics" dan klik "Enable Zombie Objects":
Ini mengubah objek yang dilepaskan menjadi instance NSZombie yang mencetak peringatan konsol saat digunakan lagi. Ini adalah alat debugging yang meningkatkan penggunaan memori (tidak ada objek yang benar-benar dirilis) tetapi meningkatkan pelaporan kesalahan.
Kasus khas adalah ketika Anda melepaskan objek secara berlebihan dan Anda tidak tahu yang mana:
-[UITableView release]: message sent to deallocated instance
Pengaturan Xcode ini diabaikan ketika Anda mengarsipkan aplikasi untuk pengiriman App Store. Anda tidak perlu menyentuh apa pun sebelum merilis aplikasi Anda.
Menekan ⌥⌘Rsama dengan memilih Produk> Jalankan sambil terus Altmenekan tombol.
Mengklik kotak centang "Aktifkan Objek Zombie" sama dengan menambahkan secara manual "NSZombieEnabled = YA" di bagian "Variabel Lingkungan" pada tab Argumen.
CMD-<
( CMD-SHIFT-comma
), atauProduct -> Scheme -> Edit SCheme...
Jawaban Jano adalah cara termudah untuk menemukannya .. cara lain adalah jika Anda mengklik bilah tarik turun skema -> edit skema -> tab argumen lalu tambahkan NSZombieEnabled di kolom Variabel Lingkungan dan YA di kolom nilai ...
Saya menemukan alternatif ini lebih nyaman:
Profile
Zombies
Segera setelah zombie terdeteksi, Anda kemudian mendapatkan "Zombie Stack" yang rapi yang menunjukkan kepada Anda ketika objek tersebut dialokasikan dan di mana objek itu disimpan atau dilepaskan:
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]
Keuntungan dibandingkan dengan menggunakan tab diagnostik Skema Xcode :
Jika Anda lupa untuk menghapus centang pada opsi pada tab diagnostik tidak ada objek yang akan dilepaskan dari memori.
Anda mendapatkan tumpukan yang lebih rinci yang menunjukkan kepada Anda dalam metode apa objek korup Anda dialokasikan / dirilis atau dipertahankan.
iOS Simulator > All
dari daftar templat utama (Anda hanya dapat melakukan ini di simulator)
Dalam Xcode 4.2
atau pilih Edit Scheme
dari Product
> Scheme
Menu
pilih Enable Zombie Objects
bentuk Diagnostics
tab
Sebagai alternatif, jika Anda lebih suka .xcconfig
file, Anda dapat membaca artikel ini https://therealbnut.wordpress.com/2012/01/01/setting-xcode-4-0-environment-variables-from-a-script/
Cocoa menawarkan fitur keren yang sangat meningkatkan kemampuan Anda untuk men-debug situasi seperti itu. Ini adalah variabel lingkungan yang disebut NSZombieEnabled, tonton video ini yang menjelaskan pengaturan NSZombieEnabled di objektif-C
Dalam Xcode> 4.3:
Anda klik pada drop down bar skema -> edit skema -> tab argumen dan kemudian tambahkan NSZombieEnabled di kolom Variabel Lingkungan dan YA di kolom nilai.
Semoga berhasil !!!