我对使用 NSOperation 下载数据的最佳实践有疑问。目前我正在使用 NSOperationQueue 在远程服务器上对 JSON 数据发出多个请求。当数据进来时,我将它分解成一个大的 NSDictionary 并使用 for 循环来解析它并将数据加载到 NSMutableDictionaries 中,然后再继续下一个请求。我的问题是我一遍又一遍地执行相同的序列,我想知道是否最好只下载数据并在完成所有下载之后,然后将我的 JSON 解析为所需的字典,也许有更好的方法来做到这一点,我只是没有想到?我使用工具检查了总分配,看起来我在这个过程中堆积了大约 30mb。
非常感谢您就此事提供任何建议。
这是 NSOperation 代码的一个小示例
plantPackKeys = [NSMutableDictionary dictionaryWithDictionary:data];
queueTwo = [NSOperationQueue new];
[queueTwo setMaxConcurrentOperationCount:4];
for(id key in data){
@autoreleasepool {
urlKey = @"";
urlKey = [data objectForKey:key];
DownloadOperation *downLoad = [[DownloadOperation alloc] initWithURL:[NSURL URLWithString:urlKey]];
[downLoad addObserver:self forKeyPath:@"isFinished" options:NSKeyValueObservingOptionNew context:NULL];
[queueTwo addOperation:downLoad];
}
}