使用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);
}
网友评论