ios – NSError release:发送给deallocated实例的消息

我在iOS 7应用程序上崩溃,出现以下错误:

-[NSError release]: message sent to deallocated instance 0x3c443fe0

添加对以下方法的调用时启动错误:

-(void)loadMessages:(NSString*)customerUID {
  NSString *formatUID = [NSString stringWithFormat:@"%s%@%s", "'", customerUID, "'"];
  formatUID = [formatUID stringByReplacingOccurrencesOfString:@"'" withString:@"%27"];
  NSString *servicePath = [NSString stringWithFormat:@"/api/messagerecipient?messageid=null&customeruid=%@", formatUID];

  [[RKObjectManager sharedManager] getObjectsAtPath:servicePath parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *messagesResult)
  {
    NSArray *messageResults = messagesResult.array;

    if (messageResults != nil || [messageResults count] != 0)
    {
      //Add some code here
    }
  } failure:^(RKObjectRequestOperation *operation, NSError *error) {

    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"An Error Has Occurred" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
  }];
}

我在代码中的各个点添加了多个断点,并没有返回任何错误细节.此外,控制台日志中没有任何内容表明问题是什么(我添加了完整的RestKit日志记录),只是上面的NSError发布消息.

我还在仪器中运行Zombie扫描.它显示以下内容.

《ios – NSError release:发送给deallocated实例的消息》

我很困惑,因为这表明僵尸是由GSEventRunModal调用创建的.当我转到扩展详细信息并选择呼叫时,它显示以下内容:

《ios – NSError release:发送给deallocated实例的消息》

任何指针都将非常感激,谢谢.

更新:仪器扩展详细信息堆栈跟踪

最佳答案 我也看到了很多,问题的根源似乎是核心数据.我使用MagicalRecord数据库库(RestKit也是如此),我们认为错误就在那里.你可以看到一个讨论
here.在我们所有的调查之后,似乎MagicalRecord是正确的,Core Data是错的.

这实际上已被提交为Apple声称已修复的错误,但我们仍然看到它.我能够解决这个问题的唯一方法是阻止我可能无法保存数据的每个实例,因此不会报告错误.您可以在与上面链接的讨论主题中看到一些提示.

点赞