Cocoa touch 不可靠的僵尸日志
我正试图追踪一个exc坏访问。我已经在NSZombie启用的情况下运行了仪器,当应用程序崩溃时,我会得到这个错误日志。有一个UIView被自动释放四次,但是在自动释放池被释放之前,它只有一个3的引用计数,所以int以-1引用计数结束 我自己没有发送任何自动删除的消息,所以我如何解决这个问题Cocoa touch 不可靠的僵尸日志,cocoa-touch,memory-management,exc-bad-access,instruments,nszombie,Cocoa Touch,Memory Management,Exc Bad Access,Instruments,Nszombie,我正试图追踪一个exc坏访问。我已经在NSZombie启用的情况下运行了仪器,当应用程序崩溃时,我会得到这个错误日志。有一个UIView被自动释放四次,但是在自动释放池被释放之前,它只有一个3的引用计数,所以int以-1引用计数结束 我自己没有发送任何自动删除的消息,所以我如何解决这个问题 # Category Event Type RefCt Timestamp Address Size Responsible Library Responsible Caller
# 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]
当使用仪器来分析泄漏时,最好忽略任何显示为苹果库造成的泄漏。需要调查的泄漏源于你的应用程序代码 自动释放的对象在池排空时释放。如果您还没有创建任何自动删除的对象,那么唯一的自动删除对象必须是Apple自己的,例如
[NSString]
我假设您已经运行了分析器并解决了所有突出显示的问题?如果没有,那就是第一步
接下来,查看出现EXC\u BAD\u访问的行。它*可能*提供关于冒犯对象的线索。很可能是——或者其他一些——对象被过早释放,或者您没有充分保留它们
当这种情况发生时,运行时将在某个时候取消分配它们。试图访问它们会导致可怕的EXC\u BAD\u访问
下面是Lou Franco关于EXC\u BAD\u ACCESS
和如何追踪它的解释的链接:
虽然我最终自己找到了答案,但我认为你的答案已经解决了,因为分析仪是我找到僵尸的原因。