Xcode运行报错如下:
image.png问题原因:
原因是for循环四百多次调用一个请求,然后控制台疯狂打印,然后内存爆了,直接闪退了。
因为for循环里面的请求变量多,导致溢出。
解决方法:
队列处理不走并发。上一个请求完成再走下一个请求即可。控制循环里创建变量的数量。
dispatch_async(dispatch_get_global_queue(0,0), ^{
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
for (NSInteger i = 0; i < sessionList.count; i++) {
C2IMSession *session = sessionList[I];
NSArray *messages = [[C2MessageManager sharedInstance]getMessageList:session.sessionId];
if (messages.count > 0) {
continue;
}
static NSInteger const PER_PAGE_MAX_MESSAGE_NUMBER = 10;
[[C2MessageManager sharedInstance] getMessageList:session.sessionId lastMsgTime:0 size:PER_PAGE_MAX_MESSAGE_NUMBER success:^(NSArray<C2IMMessage *> * _Nonnull messageList) {
dispatch_semaphore_signal(sema);
} fail:^(C2ReqError * _Nonnull error) {
dispatch_semaphore_signal(sema);
}];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
}
});
网友评论