Objective-c在打开新表格时取消分配?

时间:2017-11-24 13:46:38

标签: ios objective-c

下午好。

应用程序运行时出现内存错误。

[5133:307051] *** - [DeclarantController retain]:发送到解除分配的实例0x7f9e53d22b50的消息

在后台线程中请求数据后,表单会打开。

dispatch_async(dispatch_get_main_queue(), ^{
                        DeclarantController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"DeclarantController"];
                        viewController.consultData = self.consultData;
                        viewController.parentView = self;
                        [self.navigationController pushViewController:viewController animated:YES];
                    });

简化了控制器,但如果放入viewDidLoad方法调用getDeclarantKind,则错误POPs up。如果您注释掉,则不会发生错误。即使使用空方法也会出错。

@implementation DeclarantController : BaseController

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self tableColor];
    [self getDeclarantKind];
}

-(NSMutableArray*)getDeclarantKind
{

}
@end

以下算法时:

  1. 打开表单并在其上有一个用于过渡到B
  2. 的按钮
  3. 在后台打开API请求的表格B.如果响应表单打开C
  4. 表格C正常工作
  5. 返回表单B上的滑动,然后滑动到表单和
  6. 重复1-3项。表格打开
  7. 返回表单B上的滑动,然后滑动到表单和
  8. 重复1-3项。表单C打开但按钮将滑动。单击屏幕的任何区域后,main.m

    中存在错误

    int main(int argc,char * argv []) {     @autoreleasepool {         返回UIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegate class]));     } }

  9. 线程1:EXC_BREAKPOINT(代码= EXC_I386_BPT,子代码= 0x0)

    大多数人都不明白为什么只在第3次通过时触发错误。前2个工作。如果你想删除 [self getDeclarantKind]; ,同样的表单会被呈现并且工作正常。

1 个答案:

答案 0 :(得分:0)

我无法告诉您确切的问题或崩溃的原因。但您可以尝试为项目/工作区添加异常断点。这将为您提供导致崩溃的确切语句。

enter image description here

enter image description here

我希望这会对你有所帮助。

快乐的编码!