有時程序崩潰根本不知錯誤發生在什麼地方。比如程序出現EXEC_BAD_ACCESS的時候,雖然大部分情況使用設定 NSZombieEnabled環境變量可以幫助你找到問題的所在,但少數情況下,即使設定了NSZombieEnabled環境變量,還是不知道程序崩 潰在什麼地方。那麼就需要使用下列代碼進行幫助了:
1
2 3 4 5 6 |
#ifdef _FOR_DEBUG_
-(BOOL) respondsToSelector:(SEL)aSelector { printf("SELECTOR: %s\n", [NSStringFromSelector(aSelector) UTF8String]); return [super respondsToSelector:aSelector]; } #endif |
你需要在每個object的.m或者.mm文件中加入上面代碼,並且在 other c flags中加入-D _FOR_DEBUG_(記住請只在Debug Configuration下加入此標記)。這樣當你程序崩潰時,Xcode的console上就會準確地記錄了最後運行的object的方法。