Undestanding NSZombie登录
问题描述:
我试图跟踪EXC坏访问。我已经运行了NSZombie启用的仪器,当应用程序崩溃时,我得到这个错误日志。有一个UIView会自动释放四次,但在自动释放池被排空之前,它只有一个引用计数3,所以int以-1引用计数结束。Undestanding NSZombie登录
我不发送任何自动释放的消息我自己,所以我怎么能解决这个问题?
# Category Event Type RefCt Timestamp Address Size Responsible Library Responsible Caller
0 UITextView Malloc 1 00:09.478.888 0x80c2920 448 UIKit -[UIRuntimeConnection initWithCoder:]
1 UITextView Retain 2 00:09.492.814 0x80c2920 0 UIKit -[UITextView resignFirstResponder]
2 UITextView Autorelease 00:09.492.822 0x80c2920 0 UIKit -[UITextView resignFirstResponder]
3 UITextView Retain 3 00:09.494.396 0x80c2920 0 UIKit -[UIRuntimeConnection initWithCoder:]
4 UITextView Retain 4 00:09.494.400 0x80c2920 0 Foundation -[NSKeyedUnarchiver _replaceObject:withObject:]
5 UITextView Release 3 00:09.494.403 0x80c2920 0 UIKit -[UIRuntimeConnection initWithCoder:]
6 UITextView Retain 4 00:09.494.407 0x80c2920 0 UIKit -[UIRuntimeConnection initWithCoder:]
7 UITextView Release 3 00:09.494.448 0x80c2920 0 UIKit -[UIRuntimeConnection initWithCoder:]
8 UITextView Autorelease 00:09.494.845 0x80c2920 0 UIKit -[UIRuntimeConnection initWithCoder:]
9 UITextView Retain 4 00:09.494.848 0x80c2920 0 UIKit -[UIRuntimeConnection initWithCoder:]
10 UITextView Retain 5 00:09.495.215 0x80c2920 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
11 UITextView Retain 6 00:09.495.230 0x80c2920 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
12 UITextView Release 5 00:09.495.241 0x80c2920 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
13 UITextView Retain 6 00:09.495.255 0x80c2920 0 Foundation -[NSArray(NSArray) initWithCoder:]
14 UITextView Release 5 00:09.495.277 0x80c2920 0 UIKit -[UIView initWithCoder:]
15 UITextView Retain 6 00:09.495.325 0x80c2920 0 UIKit -[UIView(Internal) _addSubview:positioned:relativeTo:]
16 UITextView Release 5 00:09.499.036 0x80c2920 0 UIKit -[UINib instantiateWithOwner:options:]
17 UITextView Retain 6 00:09.499.306 0x80c2920 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
18 UITextView Retain 7 00:09.499.325 0x80c2920 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
19 UITextView Release 6 00:09.499.336 0x80c2920 0 Foundation -[NSKeyedUnarchiver _decodeArrayOfObjectsForKey:]
20 UITextView Retain 7 00:09.499.358 0x80c2920 0 Foundation -[NSArray(NSArray) initWithCoder:]
21 UITextView Release 6 00:09.499.385 0x80c2920 0 UIKit -[UINib instantiateWithOwner:options:]
22 UITextView Retain 7 00:09.499.511 0x80c2920 0 Proyecto3 -[EventoDetailViewControllerClass setNombreTextView:]
23 UITextView Release 6 00:09.499.681 0x80c2920 0 Foundation -[NSKeyedUnarchiver dealloc]
24 UITextView Release 5 00:09.499.747 0x80c2920 0 Foundation -[NSKeyedUnarchiver dealloc]
25 UITextView Release 4 00:09.499.762 0x80c2920 0 Foundation -[NSKeyedUnarchiver dealloc]
26 UITextView Release 3 00:09.499.817 0x80c2920 0 Foundation -[NSKeyedUnarchiver dealloc]
27 UITextView Release 2 00:09.499.880 0x80c2920 0 UIKit -[UIRuntimeConnection dealloc]
28 UITextView Retain 3 00:09.534.891 0x80c2920 0 QuartzCore -[CALayer layoutSublayers]
29 UITextView Release 2 00:09.534.895 0x80c2920 0 QuartzCore CALayerLayoutIfNeeded
30 UITextView Retain 3 00:09.607.480 0x80c2920 0 UIKit -[UIView(Hierarchy) subviews]
31 UITextView Retain 4 00:09.607.947 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setView:]
32 UITextView Retain 5 00:09.607.951 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setGestureView:]
33 UITextView Retain 6 00:09.608.655 0x80c2920 0 UIKit -[UITouch view]
34 UITextView Autorelease 00:09.608.658 0x80c2920 0 UIKit -[UITouchesEvent _clearViewForTouch:]
35 UITextView Release 5 00:09.608.661 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setView:]
36 UITextView Release 4 00:09.608.666 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setGestureView:]
37 UITextView Release 3 00:09.608.807 0x80c2920 0 Foundation -[NSAutoreleasePool release]
38 UITextView Retain 4 00:09.609.307 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setView:]
39 UITextView Retain 5 00:09.609.311 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setGestureView:]
40 UITextView Retain 6 00:09.725.677 0x80c2920 0 UIKit -[UITouch view]
41 UITextView Autorelease 00:09.725.680 0x80c2920 0 UIKit -[UITouchesEvent _clearViewForTouch:]
42 UITextView Release 5 00:09.725.684 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setView:]
43 UITextView Release 4 00:09.725.688 0x80c2920 0 UIKit -[UITouch(UITouchInternal) setGestureView:]
44 UITextView Release 3 00:09.725.839 0x80c2920 0 Foundation -[NSAutoreleasePool release]
45 UITextView Zombie -1 00:11.383.459 0x80c2920 0 UIKit -[UIView(Internal) _invalidateSubviewCache]
答
当使用Instruments来分析泄漏时,最好忽略显示归因于Apple库的泄漏。要调查的泄漏是那些显示来源于您的应用程序的代码。当池排出被自动释放
对象被释放。如果您还没有创建自己发布的任何自己的对象,那么唯一的自动发布的对象必须是Apple自己的对象,例如。 [NSString string]
。
我假定你已经运行分析和解决突出问题,所有?如果不是,那就是第一步。
接下来,看看那里的EXC_BAD_ACCESS
发生线路。它*可能*提供关于违规对象的线索。有可能是 - 或其他 - 对象被过早释放,或者您没有充分保留它们。
发生这种情况时,在某些点上运行时会收回他们。尝试访问它们会导致可怕的EXC_BAD_ACCESS
。
这里的链接娄佛朗哥的解释上EXC_BAD_ACCESS
以及如何追查:
虽然我终于设法得到它自己,我纪念你的答案来解决,因为分析是什么导致我得到僵尸。 –