0

我正在开发通过 Web 服务接收大量数据(例如数组中的30K字典)的应用程序。我正在使用 JSON 工具包来解析大量数据。得到响应后,我会将这些数据存储到 plist 文件中(因为我想在离线模式下运行应用程序)。

之后,我使用 NSMutableArray(带有30K字典)访问这些数据。现在为了进一步计算,我正在使用这个数组并使用这个循环7-8 次计算来绘制图形。

//path = path from which i access the plist

NSMutableArray *array = [[NSMutableDictionary alloc] initWithContentsOfFile: path];

//where array contains about 30K dictionaries.

for(int i=0; i<[array count]; i++) {

    // some calculation formula
}

执行上述循环后,相同的循环被调用 7-8 次。

由于内存问题,我从 plist 读取数据后,我的应用程序崩溃了。请帮我解决问题。

4

1 回答 1

0

由于您的问题与内存有关,您必须尽快释放内存。我假设您在 iOS 6.0 中使用 ARC。尝试在 @autoreleasepool 中使用循环,看看是否有什么不同。如果需要,您还可以使用嵌套的 @autoreleasepool。

for(int i=0; i<[array count]; i++) {
   @autoreleasepool {
       // calculation formula
    }
}

老办法;

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
for(int i=0; i<[array count]; i++) {
       // calculation formula
}
[pool drain];
于 2012-10-12T15:43:02.710 回答