使用for、while、do-while循環遍歷數據量大的時候,出現內存使用率不斷增加有可能直至內存告警,APP被殺掉,因為在使用上述方法遍歷數組這個短暫的生命周期內,會產生大量的臨時內存,而這些臨時內存直至循環結束才釋放。解決方法如下
for(inti=0; i<1000000000; i++) {
@autoreleasepool{
int b=i;
NSLog(@"b:%d",b);
}
}
即將循環體里面放入自動釋放池里面。
例如,下面一段代碼就應該放在自動釋放池中
for (int i = 0; i < someLargeNumber; i++) {
NSString *string = @”Abc”;//常量區
string = [string lowercaseString];//新的堆區
string = [string stringByAppendingString:@"xyz"];//新的堆區
NSLog(@“%@”, string);
}