2010-11-19 21 views
2

好吧,所以这让我完全难住,就像那个人here与确切的问题。发送给实例的无法识别的选择器。方法被称为随机对象

我有在支持自动旋转,有时,如果我旋转手机,我得到“EXC_BAD_ACCESS”有时我得到SIGABRT与像一个堆栈跟踪视图控制器一些行UITableView

2010-11-19 16:51:05.634 [2306:307] -[CABasicAnimation numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x58207d0 
2010-11-19 16:51:05.688 [2306:307] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[CABasicAnimation numberOfSectionsInTableView:]: unrecognized selector sent to instance 0x58207d0' 
*** Call stack at first throw: 
(
0 CoreFoundation      0x344aaed3 __exceptionPreprocess + 114 
1 libobjc.A.dylib      0x33975811 objc_exception_throw + 24 
2 CoreFoundation      0x344ac683 -[NSObject(NSObject) doesNotRecognizeSelector:] + 102 
3 CoreFoundation      0x344541d9 ___forwarding___ + 508 
4 CoreFoundation      0x34453f90 _CF_forwarding_prep_0 + 48 
5 UIKit        0x31b20717 -[UITableViewRowData(UITableViewRowDataPrivate) _updateNumSections] + 66 
6 UIKit        0x31b20677 -[UITableViewRowData invalidateAllSections] + 50 
7 UIKit        0x31b2048d -[UITableView(_UITableViewPrivate) _updateRowData] + 64 
8 UIKit        0x31b22941 -[UITableView(_UITableViewPrivate) _ensureRowDataIsLoaded] + 24 
9 UIKit        0x31b22909 -[UITableView numberOfSections] + 16 
10 UIKit        0x31bd114f -[UISearchDisplayController _updateNoSearchResultsMessageVisiblity] + 54 
11 UIKit        0x31cfbef7 -[UISearchDisplayController windowWillAnimateRotation:] + 478 
12 Foundation       0x3325d6b3 _nsnote_callback + 142 
13 CoreFoundation      0x34431713 __CFXNotificationPost_old + 402 
14 CoreFoundation      0x344313b3 _CFXNotificationPostNotification + 118 
15 Foundation       0x3324cdb7 -[NSNotificationCenter postNotificationName:object:userInfo:] + 70 
16 UIKit        0x31b5dbb7 -[UIWindow _setRotatableClient:toOrientation:duration:force:] + 3114 
17 UIKit        0x31b64013 -[UIWindow _setRotatableViewOrientation:duration:force:] + 50 
18 UIKit        0x31b39a0f -[UIWindow _updateToInterfaceOrientation:duration:force:] + 74 
19 UIKit        0x31b39be9 -[UIWindow _updateInterfaceOrientationFromDeviceOrientation:] + 112 
20 UIKit        0x31b39b15 -[UIWindow _handleDeviceOrientationChange:] + 88 
21 Foundation       0x3325d6b3 _nsnote_callback + 142 
22 CoreFoundation      0x34431713 __CFXNotificationPost_old + 402 
23 CoreFoundation      0x344313b3 _CFXNotificationPostNotification + 118 
24 Foundation       0x3324cdb7 -[NSNotificationCenter postNotificationName:object:userInfo:] + 70 
25 UIKit        0x31b0d0ed -[UIDevice setOrientation:animated:] + 144 
26 UIKit        0x31b2a51b -[UIApplication handleEvent:withNewEvent:] + 2738 
27 UIKit        0x31b29901 -[UIApplication sendEvent:] + 44 
28 UIKit        0x31b29337 _UIApplicationHandleEvent + 5110 
29 GraphicsServices     0x3026c04b PurpleEventCallback + 666 
30 CoreFoundation      0x3443fce3 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 26 
31 CoreFoundation      0x3443fca7 __CFRunLoopDoSource1 + 166 
32 CoreFoundation      0x3443256d __CFRunLoopRun + 520 
33 CoreFoundation      0x34432277 CFRunLoopRunSpecific + 230 
34 CoreFoundation      0x3443217f CFRunLoopRunInMode + 58 
35 GraphicsServices     0x3026b5f3 GSEventRunModal + 114 
36 GraphicsServices     0x3026b69f GSEventRun + 62 
37 UIKit        0x31ad-[UIApplication _run] + 402 
38 UIKit        0x31ace12f UIApplicationMain + 670 
39 App         0x0000285f main + 70 
40 App       0x00002814 start + 40 
) 
terminate called after throwing an instance of 'NSException' 
Program received signal: “SIGABRT”. 

在这种情况下,它是CABasicAnimation其中numberOfSectionsInTableView被调用,但有时候会有类名称,如NSMachPort,我从来没有听说过。此外,名为numberOfSectionsInTableView的方法仍然与类名更改为始终给出doesNotRecognizeSelector例外的方法相同。

此外,只有当我尝试旋转设备时才会出现此问题。每当我得到像上面这样的堆栈跟踪时,都会有所有系统功能,这使得它很难调试。

真的需要一些专家建议。请阅读上面提到的论坛,以明确问题。

回答

1

从启用NSZombies开始。它听起来像是你过度释放一个物体。

2

哇!我以为我知道NSZombies够了,但我错了!

我启用NSZombies害得我:

*** -[ContactsViewController numberOfSectionsInTableView:]: message sent to deallocated instance 0x88dafa0 

做“宝0x88dafa0”不会工作,因为这个对象的内存已经被释放。

更多谷歌搜索引导我到this作者介绍了如何找到释放/释放的对象。我们只需在变量中将MallocStackLoggingNoCompact设置为1,以便与NSZombieEnabled一起在环境中设置。

我与info malloc-history 0xf270740命令得到的输出有行:

-[VoicePlayController actionSheet:clickedButtonAtIndex:] at /Users/Documents/Xcode Projects/Classes/VoicePlayController.m:454 

在该行的代码是:

contactsViewController = [[ContactsViewController alloc] initWithNibName:@"ContactsViewController" bundle:nil]; 

[self.navigationController presentModalViewController:contactsViewController animated:YES];之后立即移动[contactsViewController release];线dealloc方法,而不是问题没有了!

相关问题