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以及如何追查:

Understanding EXC_BAD_ACCESS

+0

虽然我终于设法得到它自己,我纪念你的答案来解决,因为分析是什么导致我得到僵尸。 –