问题遇到的现象和发生背景
偶先崩溃,因为启动进入到此页面,大概没启动 APP3-5 次出现崩溃一次,因为多线程原因,具体原因未知,改动之后 bug 解决,为什么能解决也不清楚,请大 佬解惑,
FAMallBindVM 里面是网络请求,请求成功之后会有dispatch_group_leave一一对应
问题相关代码,请勿粘贴截图
dispatch_group_t group = dispatch_group_create();
self.viewModel.disGroup = group;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
__weak typeof(self) weakSelf = self;
dispatch_group_enter(self.viewModel.disGroup);
dispatch_group_async(self.viewModel.disGroup, queue, ^{
[FAMallBindVM postBanner:weakSelf.viewModel];
});
dispatch_group_enter(self.viewModel.disGroup);
dispatch_group_async(self.viewModel.disGroup, queue, ^{
[FAMallBindVM postNews:weakSelf.viewModel];
});
dispatch_group_enter(self.viewModel.disGroup);
dispatch_group_async(self.viewModel.disGroup, queue, ^{
[FAMallBindVM postCategory:weakSelf.viewModel];
});
dispatch_group_enter(self.viewModel.disGroup);
dispatch_group_async(self.viewModel.disGroup, queue, ^{
[FAMallBindVM postArticle:weakSelf.viewModel];
});
dispatch_group_notify(self.viewModel.disGroup, queue, ^{
[weakSelf.mainTableView refreshHandle:HJRefresh_end];
});
运行结果及报错内容
唯一不同的是这块代码,我把里面的网络请求内容拿出来了,拿出来之后问题解决
dispatch_group_async(self.viewModel.disGroup, queue, ^{
[FAMallBindVM postCategory:weakSelf.viewModel];
});
我的解答思路和尝试过的方法
此处代码问题解决
dispatch_group_t group = dispatch_group_create();
self.viewModel.disGroup = group;
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_group_enter(self.viewModel.disGroup);
[FAMallBindVM postBanner:self.viewModel];
dispatch_group_enter(self.viewModel.disGroup);
[FAMallBindVM postNews:self.viewModel];
dispatch_group_enter(self.viewModel.disGroup);
[FAMallBindVM postCategory:self.viewModel];
dispatch_group_enter(self.viewModel.disGroup);
[FAMallBindVM postArticle:self.viewModel];
__weak typeof(self) weakSelf = self;
dispatch_group_notify(self.viewModel.disGroup, queue, ^{
[weakSelf.mainTableView refreshHandle:HJRefresh_end];
});