NSOperation数据解析最佳实​​践

时间:2013-02-15 15:07:26

标签: objective-c json nsmutabledictionary nsoperation

我对使用NSOperation下载数据的最佳做法有疑问。目前我正在使用NSOperationQueue在远程服务器上发出多个JSON数据请求。当数据进入时,我将它分成一个大的NSDictionary并使用for循环来解析它并在继续下一个请求之前将数据加载到NSMutableDictionaries中。我的问题是我一遍又一遍地执行这个相同的序列,我想知道是否更好的想法只是下载数据并在完成所有下载之后,然后将我的JSON解析为所需的字典,也许有更好的方法来做到这一点,我只是没想到? 我使用仪器检查了总分配情况,看起来在这个过程中我正在筹集大约30mb。

会对此事提出任何建议。

以下是NSOperation Code的一小部分样本

          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];
              }
          }

1 个答案:

答案 0 :(得分:1)

知道哪些对象消耗了这么多内存会很有趣。您可以通过分解服务器中的数据包来减少内存占用。另一个问题是你真的需要在内存中保留那么多数据吗?

您可以使用其他后端(如CoreData或原始SQLite)在解析数据时将数据保存到磁盘。优点是您不必一次性加载内存中的所有内容,这是序列化NSDictionaries的情况。