我在尝试发布通知时收到 EXC_BAD_ACCESS (code=2, address=0x8) 错误。
偶尔我会看到:
-[__NSMallocBlock__ handleMessagesReceived:]: unrecognized selector sent to instance 0x9855cd0
通知邮政编码如下所示:
NSDictionary *notificationInfo = [NSDictionary dictionaryWithObject:outputArray forKey:@"messages"];
[[NSNotificationCenter defaultCenter] postNotificationName:kMESocialHeatmapMessagesReceivedNotification object:nil userInfo:notificationInfo];
观察者代码如下所示(这是该通知的唯一处理程序):
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleMessagesReceived:) name:kMESocialHeatmapMessagesReceivedNotification object:nil];
和处理程序代码:
- (void)handleMessagesReceived:(NSNotification *)notification {...}
我已经清理了项目(CMD-SHIF-K、CMD-ALT-SHIFT-K 并从 Organizer 中删除了派生数据),重新启动了 Xcode 和我的机器,甚至重新编写了相关代码。同样的问题,我只是没有看到这个问题。
任何见解都非常感谢。
干杯,
克里斯
========== 更新(无法回答我自己的问题...)============
干杯,菲利普和响,这为我指明了正确的方向。
我确实理解 EXC_BAD_ACCESS 表示一个已解除分配的对象,但在这种情况下,这是不可能的,因为系统的主类正在持有有问题的对象(热图)。
这个问题原来是热图的创建和它共享的数据模型的填充之间的竞争条件。填充偶尔会在热图创建完成之前发生(两者都是事件驱动的)。
我最终重新编写了代码,以便保存热图的类在热图更清晰后进行同步调用以填充数据。
感谢您的输入,它让我头疼。:)
克里斯