当您在后台NSURLSession上排入太多任务(例如数百个任务)时,它似乎不能很好地工作。如何将已排队的任务数量保持在一个小的固定数目,例如10?
发布于 2014-04-03 14:14:28
在负责排队任务的类中,使用ivar来跟踪活动任务。
// In MySessionWrapper.m
@interface MySessionWrapper () {
NSMutableSet *activeTaskIds;
}
@end在对任务进行排队时,将其ID添加到该集合中:
[activeTaskIds addObject:@([task taskIdentifier])]当您获得didComplete回调时,删除ID,如果活动任务的数量低于目标,则添加更多任务:
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
// other stuff
[activeTaskIds removeObject:@([task taskIdentifier])]
if ([activeTaskIds count] < NUMBER) {
// add more tasks
}
}这个系统现在对我有用了。
https://stackoverflow.com/questions/22840115
复制相似问题