– 调用时崩溃 –

我正在使用Crashlytics来检测我的应用程序崩溃。 我偶尔会得到后续的崩溃报告。

关键的崩溃点是 – [NSObject(NSObject)doesNotRecognizeSelector:]和MyViewController.m第596行 – [MyViewController prepareForSegue:sender:]。 我不知道从日志中得到的是什么问题。 是可能的multithreading问题? 我也使用Parse SDK从Parse云中检索数据。 而prepareForSegue:sender:方法会在用户点击揭密指标时被调用,它应该在主线程中运行。 请给我一些提示,以解决这个问题。 提前致谢。

这里是我如何调用prepareForSegue:发送者:方法。

- (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导致exception。

 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 

这是因为在你看来,你打开了一个地方,你正试图调用UITableViewCell上称为row的方法。

你可以在你的崩溃日志的第一行看到这个:

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

你应该跟踪你所调用的row是什么对象,并确保你调用的是你认为是的对象而不是UITableViewCell