如何调试此错误:CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER?

时间:2013-12-23 15:25:13

标签: ios objective-c nsnotificationcenter

我在我的应用中遇到错误,我不知道如何弄清楚,有没有人见过这个:

#   Binary Image Name   Address Symbol
0   RepZio  0x002bd302  testflight_backtrace
1   RepZio  0x002bc996  TFSignalHandler
2   libsystem_platform.dylib    0x39ce0062  _sigtramp
3   CoreFoundation  0x2edde118  __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__
4   CoreFoundation  0x2ed52256  _CFXNotificationPost
5   Foundation  0x2f737c2c  -[NSNotificationCenter postNotificationName:object:userInfo:]
6   Foundation  0x2f73c50a  -[NSNotificationCenter postNotificationName:object:]
7   UIKit   0x3180b2cc  -[UIApplication _performMemoryWarning]
8   libdispatch.dylib   0x39ba0d06  _dispatch_client_callout
9   libdispatch.dylib   0x39ba9802  _dispatch_source_invoke$VARIANT$mp
10  libdispatch.dylib   0x39ba773c  _dispatch_main_queue_callback_4CF$VARIANT$mp
11  CoreFoundation  0x2ede6818  __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__
12  CoreFoundation  0x2ede50ec  __CFRunLoopRun
13  CoreFoundation  0x2ed4fc26  CFRunLoopRunSpecific
14  CoreFoundation  0x2ed4fa0a  CFRunLoopRunInMode
15  GraphicsServices    0x33a50282  GSEventRunModal
16  UIKit   0x315f3048  UIApplicationMain
17  MyAppName   0x00109afa  main in main.m on Line 15
18  libdyld.dylib   0x39bc5ab6  start

迷失在此。

2 个答案:

答案 0 :(得分:11)

确保在释放所有通知观察者之前将其删除。释放观察者并且通知中心仍具有指向该对象的指针并尝试通知它时,会发生此问题。检查所有addObserver是否都有相应的removeObserver调用。

答案 1 :(得分:0)

我知道这个老问题,但也许我会帮助别人。

在我的情况下,当NSTextFieldNSTableViewCell处于编辑模式并且用户尝试从tableView外部的组合框中选择值而未完成编辑时,发生了同样的崩溃。同样的CFNOTIFICATIONCENTER_...崩溃就在[tableView reloadData]上。

所以,我解决崩溃的方法是在重新加载表之前放置[self.window makeFirstResponder:nil]