iPad应用

我有一个很大的文本文件,我想将其分成几部分并循环处理。
我使用以下代码:

NSArray * contentArray = [stringFromFile componentsSeparatedByString:@" "];

for(...){
    contentRange = NSMakeRange(lastPosition , newLength);
    NSArray * subContentArray = [contentArray subarrayWithRange:contentRange];
    NSString *subContent = [subContentArray componentsJoinedByString:@" "];
    ....
    //Process sub content here...

}


运行后,我收到malloc错误,代码12

观察“活动”监视器,内存和VM的大小会增加,直到系统内存用完并且应用程序崩溃为止。

有什么办法可以防止这种情况?

最佳答案

解决此问题的一种方法是使用自定义NSAutoreleasePool不断清除临时分配的内存。像这样:

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSUInteger i=0;

for (...) {
  ... // your method contents

  if (++i % 10 == 0) {
    // you might want to play with the frequency of the releases, depending on the size of your loop
    [pool release];
    pool = [[NSAutoreleasePool alloc] init];
  }
}

[pool release];

10-08 18:53