2013-08-19 1 views
4

Я использую Crashlytics для обнаружения сбоев в моем приложении. Я иногда получаю следующий отчет о сбоях.- [NSObject (NSObject) doesNotRecognizeSelector:] сбой при вызове - [ViewController prepareForSegue: sender:]

Ключевой момент столкновения - [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: Отправитель: метод вызывается 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

показать код, который вы написали в методе '- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath' –

+0

Я попытался установить crashlytics, но я предполагаю, что это ранний этап, только по приглашению приложение, которое вы можете установить? – abbood

+0

@abbood, вы можете использовать его бесплатно прямо сейчас. –

ответ

6

Это происходит потому, что с точки зрения, что вы открываете вверх в, где вы пытаетесь вызвать метод, называемый row на UITableViewCell.

Вы можете увидеть это в первой строке журнала аварии:

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

Вы должны отследить, что объект, который вы вызываете row и убедитесь, что вы вызываете его на объект, который вы думаете, являются, а не UITableViewCell.

+1

Jsdodgers прав ... проверьте в свой метод 'prepareForSegue' для вызова' row' на что-то. Может быть, вы ожидаете, что «отправитель» будет чем-то, что реагирует на «строку», но вместо этого получается «UITableViewCell»? –

+0

Я обновил свой вопрос, чтобы добавить readyForSegue –

+1

Глядя на ваш prepareForSegue, вы отправляете отправителя как NSIndexPath, а на самом деле это UITableViewCell. Затем вы вызываете indexPath.row, поэтому вы получаете эту ошибку. – Jsdodgers

 Смежные вопросы

  • Нет связанных вопросов^_^