- [NSObject(NSObject)doesNotRecognizeSelector:]调用时崩溃 - [ViewController prepareForSegue:sender:]

时间:2013-08-19 04:54:01

标签: ios objective-c crashlytics

我正在使用Crashlytics来检测我的应用中的崩溃。我偶尔会得到以下崩溃报告。

关键崩溃点是 - [NSObject(NSObject)doesNotRecognizeSelector:]和MyViewController.m第596行 - [MyViewController prepareForSegue:sender:]。我不知道日志中的问题是什么。是否可能出现多线程问题?我也在使用Parse SDK从Parse云中检索数据。而prepareForSegue:sender:方法将在用户点击披露指标时调用,它应该在主线程中运行。你能不能给我一些提示来解决这个问题。提前致谢。

以下是我如何调用prepareForSegue:sender:method。

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath
{
    [self performSegueWithIdentifier:@"oneSegue" sender:indexPath];
}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"oneSegue"]) {
        NSIndexPath *indexPath = (NSIndexPath*)sender;
        OneViewController *destViewController = segue.destinationViewController;
        OneClass* oneObject = self.array[indexPath.row];
        destViewController.objectName = oneObject.name;
    }
}

prepareForSegue:sender:方法由accessoryButtonTappedForRowWithIndexPath:方法触发。我看不到任何其他方式来调用prepareForSegue:sender:方法。所以我不知道为什么indexPath.row会导致异常。

Fatal Exception NSInvalidArgumentException
-[UITableViewCell row]: unrecognized selector sent to instance 0x1f8a6dd0
0    CoreFoundation  __exceptionPreprocess + 162
1    libobjc.A.dylib     objc_exception_throw + 30
2    **CoreFoundation    -[NSObject(NSObject) doesNotRecognizeSelector:] + 170**
3    CoreFoundation  ___forwarding___ + 392
4    CoreFoundation  _CF_forwarding_prep_0 + 24
5    MyApp  
MyViewController.m line 596
**-[MyViewController prepareForSegue:sender:]**
6    UIKit   -[UIStoryboardSegueTemplate _perform:] + 128
7    UIKit   -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 828
8    UIKit   -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 156
9 ...    Foundation  __NSFireDelayedPerform + 450
10   CoreFoundation  __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14
11   CoreFoundation  __CFRunLoopDoTimer + 272
12   CoreFoundation  __CFRunLoopRun + 1232
13   CoreFoundation  CFRunLoopRunSpecific + 356
14   CoreFoundation  CFRunLoopRunInMode + 104
15   GraphicsServices    GSEventRunModal + 74
16   UIKit   UIApplicationMain + 1120
17   MyApp  
main.m line 16
main
18   libdyld.dylib   start
9 Threads
com.apple.main-thread Crashed
0 ...    libsystem_kernel.dylib  __pthread_kill + 8
1    libsystem_c.dylib   pthread_kill + 58
2    libsystem_c.dylib   abort + 94
3    libc++abi.dylib     abort_message + 74
4    libc++abi.dylib     default_terminate() + 24
5    libobjc.A.dylib     _objc_terminate() + 146
6    libc++abi.dylib     safe_handler_caller(void (*)()) + 78
7    libc++abi.dylib     std::terminate() + 19
8    libc++abi.dylib     __cxa_current_exception_type
9    libobjc.A.dylib     objc_exception_rethrow + 12
10   CoreFoundation  CFRunLoopRunSpecific + 456
11   CoreFoundation  CFRunLoopRunInMode + 104
12   GraphicsServices    GSEventRunModal + 74
13   UIKit   UIApplicationMain + 1120
14   MyApp  
main.m line 16
main
com.apple.libdispatch-manager
0 ...    libsystem_kernel.dylib  kevent64 + 24
1    libdispatch.dylib   _dispatch_mgr_invoke + 796
2    libdispatch.dylib   _dispatch_mgr_thread$VARIANT$mp + 35
WebThread
0 ...    libsystem_kernel.dylib  mach_msg_trap + 20
1    libsystem_kernel.dylib  mach_msg + 40
2    CoreFoundation  __CFRunLoopServiceMachPort + 128
3    CoreFoundation  __CFRunLoopRun + 882
4    CoreFoundation  CFRunLoopRunSpecific + 356
5    CoreFoundation  CFRunLoopRunInMode + 104
6    WebCore     RunWebThread(void*) + 444
7    libsystem_c.dylib   _pthread_start + 308
com.crashlytics.MachExceptionServer
0    libsystem_kernel.dylib  mach_msg_trap + 20
1    libsystem_kernel.dylib  mach_msg + 40
2    MyApp   CLSMachExceptionServer
3    libsystem_c.dylib   _pthread_start + 308
com.apple.NSURLConnectionLoader
0 ...    libsystem_kernel.dylib  mach_msg_trap + 20
1    libsystem_kernel.dylib  mach_msg + 40
2    CoreFoundation  __CFRunLoopServiceMachPort + 128
3    CoreFoundation  __CFRunLoopRun + 882
4    CoreFoundation  CFRunLoopRunSpecific + 356
5    CoreFoundation  CFRunLoopRunInMode + 104
6    Foundation  +[NSURLConnection(Loader) _resourceLoadLoop:] + 308
7    Foundation  __NSThread__main__ + 972
8    libsystem_c.dylib   _pthread_start + 308
Thread 5
0 ...    libsystem_kernel.dylib  mach_msg_trap + 20
1    libsystem_kernel.dylib  mach_msg + 40
2    CoreFoundation  __CFRunLoopServiceMachPort + 128
3    CoreFoundation  __CFRunLoopRun + 882
4    CoreFoundation  CFRunLoopRunSpecific + 356
5    CoreFoundation  CFRunLoopRunInMode + 104
6    Foundation  -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 254
7    Foundation  -[NSRunLoop(NSRunLoop) run] + 80
8    MyApp  
PF_AFURLConnectionOperation.m line 151
+[PF_AFURLConnectionOperation networkRequestThreadEntryPoint:]
9    Foundation  __NSThread__main__ + 972
10   libsystem_c.dylib   _pthread_start + 308
Thread 6
0 ...    libsystem_kernel.dylib  __psynch_cvwait + 24
1    libsystem_c.dylib   _pthread_cond_wait + 646
2    libsystem_c.dylib   pthread_cond_wait + 40
3    Foundation  -[NSCondition wait] + 194
4    MyApp  
PFCommandCache.m line 495
-[PFCommandCache runLoop]
5    Foundation  __NSThread__main__ + 972
6    libsystem_c.dylib   _pthread_start + 308
com.apple.CFSocket.private
0 ...    libsystem_kernel.dylib  __select + 20
1    CoreFoundation  __CFSocketManager + 678
2    libsystem_c.dylib   _pthread_start + 308
Thread 8
0 ...    libsystem_kernel.dylib  __workq_kernreturn + 8
1    libsystem_c.dylib   _pthread_workq_return + 18
2    libsystem_c.dylib   _pthread_wqthread + 365
Blog Privacy

1 个答案:

答案 0 :(得分:7)

这是因为在视图中,您正在尝试在row上调用名为UITableViewCell的方法。

您可以在崩溃日志的第一行看到这一点:

-[UITableViewCell row]: unrecognized selector sent to instance 0x1f8a6dd0

您应该跟踪您正在呼叫的row对象,并确保在您认为自己的对象上调用它而不是UITableViewCell