- [NSObject(NSObject)doesNotRecognizeSelector:]调用时崩溃 - [ViewController prepareForSegue:sender:] [英] -[NSObject(NSObject) doesNotRecognizeSelector:] crash when call -[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屋!