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