【发布时间】:2018-05-08 13:11:07
【问题描述】:
下午好。
应用运行时内存出错。
[5133:307051] *** -[DeclarantController 保留]:消息发送到已释放实例 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 会弹出错误。如果您注释掉,则不会发生错误。即使使用空方法也会发生错误。
@implementation DeclarantController : BaseController
- (void)viewDidLoad
{
[super viewDidLoad];
[self tableColor];
[self getDeclarantKind];
}
-(NSMutableArray*)getDeclarantKind
{
}
@end
当如下算法:
- 打开一个表单,上面有一个转换到 B 的按钮
- 在后台进程中打开表单 B 的 API 请求。如果响应来自表单打开 C
- Form C 正常工作
- 返回在表单 B 上滑动,然后滑动到表单和
- 重复项目 1-3。表单打开
- 返回在表单 B 上滑动,然后滑动到表单和
-
重复项目 1-3。 Form C 打开,但按钮会滑动。单击屏幕的任何区域后,main.m 中有一个错误
int main(int argc, char *argv[]) { @autoreleasepool { 返回 UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } }
线程 1:EXC_BREAKPOINT(代码=EXC_I386_BPT,子代码=0x0)
大多数人不明白为什么错误只在第 3 次通过时触发。前2个工作。如果你想删除 [self getDeclarantKind]; 相同的表单会被渲染并且工作正常。
【问题讨论】:
-
你加分了吗?
标签: ios objective-c