我一直在看到從應用程序用戶發送的崩潰報告中發送的相同消息。很明顯,一個對象被過度釋放,但我無法複製它,我正在尋找提示追蹤它的來源。發現過度釋放的來源
從崩潰報告中的相關章節說明這一點:
Application Specific Information:
objc_msgSend() selector name: release
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 libobjc.A.dylib 0x90892edb objc_msgSend + 27
1 com.apple.CoreFoundation 0x95ec5a40 __CFBasicHashStandardCallback + 384
2 com.apple.CoreFoundation 0x95ec564e __CFBasicHashDrain + 478
3 com.apple.CoreFoundation 0x95ead6f1 _CFRelease + 353
4 com.apple.CoreFoundation 0x95eda0ed _CFAutoreleasePoolPop + 253
5 com.apple.Foundation 0x97ecedd6 NSPopAutoreleasePool + 76
6 com.apple.Foundation 0x97ececfe -[NSAutoreleasePool drain] + 130
7 com.apple.AppKit 0x9211255f -[NSApplication run] + 1013
8 com.apple.AppKit 0x9210a535 NSApplicationMain + 574
9 TheApp 0x000020a6 start + 54
我用殭屍和泄漏,但沒有看到任何有。 我已經通過代碼,看不到它。
下一步是什麼? 有沒有任何提示可以從這些信息中辨別出它的來源?
事實上,這個幾乎完全相同的崩潰報告重複進入意味着它是被釋放的同一個對象,或者因爲這是指autorelease池意味着它可能是任何對象?
對_CFRelease的引用是否意味着它是正在被釋放的核心基礎對象?