1、為什么會(huì)使用NSZombieEnabled?
應(yīng)用調(diào)試可能會(huì)收到類似 Thread1: Program received signal:"EXC_BAD_ACCESS 這樣的錯(cuò)誤提示信息,這樣的信息通常是內(nèi)存操作錯(cuò)誤引起。
當(dāng)設(shè)置NSZombieEnabled環(huán)境變量后柜思,一個(gè)對(duì)象銷毀時(shí)會(huì)被轉(zhuǎn)化為_NSZombie,設(shè)置NSZombieEnabled后克饶,當(dāng)你向一個(gè)已經(jīng)釋放的對(duì)象發(fā)送消息酝蜒,這個(gè)對(duì)象就不會(huì)向之前那樣Crash或者產(chǎn)生一個(gè)難以理解的行為矾湃,而是放出一個(gè)錯(cuò)誤消息,然后以一種可預(yù)測(cè)的可以產(chǎn)生debug斷點(diǎn)的方式消失堕澄, 因此我們就可以找到具體或者大概是哪個(gè)對(duì)象被錯(cuò)誤的釋放了邀跃。
2、如何設(shè)置為NSZombieEnabled模式蛙紫?
方法一:Product -> Edit Scheme-> Arguments, 然后將點(diǎn)擊”加號(hào)”, 將 NSZombieEnabled 參數(shù)加到Environment Variables 窗口中, 后面的數(shù)值寫上 ”YES”.
方法二: Product -> EditScheme -> Diagnostics 設(shè)置窗口中直接勾上Enable ZombieObjects 即可