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

查看:2065
本文介绍了 - [NSObject(NSObject)doesNotRecognizeSelector:]调用时崩溃 - [ViewController prepareForSegue:sender:]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am using Crashlytics to detect the crashes in my app. I occasionally get the follow crash report.

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

The key crash point is -[NSObject(NSObject) doesNotRecognizeSelector:] and MyViewController.m line 596 -[MyViewController prepareForSegue:sender:]. I don't know what's the problem of that from the log. Is is possible a multi-threading issue? I am also using Parse SDK to retrieve the data from Parse cloud. And prepareForSegue:sender: method will be invoked when the user tap the disclosure indicator, it should run in main thread. Would you please give me some hint to troubleshoot this issue. Thanks in advance.

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

Here is how I call 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会导致异常。

prepareForSegue:sender: method is triggered by accessoryButtonTappedForRowWithIndexPath: method. I can't see any other way to invoke prepareForSegue:sender: method. So I don't why indexPath.row causes the 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


推荐答案

这是因为在视图中你打开了某个地方,你试图在<$ c上调用一个名为 row 的方法$ c> UITableViewCell 。

It is because in the view that you are opening up into, somewhere you are trying to call a method called row on a UITableViewCell.

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

You can see this in the first line of your crash log:

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

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

You should track down what object you are calling row on and make sure that you are calling it on the object that you think you are and not a UITableViewCell.

这篇关于 - [NSObject(NSObject)doesNotRecognizeSelector:]调用时崩溃 - [ViewController prepareForSegue:sender:]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆