我正在使用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
答案 0 :(得分:7)
这是因为在视图中,您正在尝试在row
上调用名为UITableViewCell
的方法。
您可以在崩溃日志的第一行看到这一点:
-[UITableViewCell row]: unrecognized selector sent to instance 0x1f8a6dd0
您应该跟踪您正在呼叫的row
对象,并确保在您认为自己的对象上调用它而不是UITableViewCell
。