前言
在iOS开发过程中,代码中的内存泄露会使得大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃。
大次数循环内存暴涨问题
一道经典的面试题,代码如下:
for (int i =0; i < 900000; i++) {
NSString *string =@"Abc";
string = [string lowercaseString];
string = [string stringByAppendingString:@"xyz"];
NSLog(@"%@", string);
}
原因
该循环内产生大量的临时对象,直至循环结束才释放,可能导致内存泄漏;解决方法为在循环中创建自己的autoReleasePool,及时释放占用内存大的临时变量,减少内存占用峰值。
解决办法:
for (int i =0; i < 900000; i++) {
@autoreleasepool {
NSString *string =@"Abc";
string = [string lowercaseString];
string = [string stringByAppendingString:@"xyz"];
NSLog(@"%@", string);
}
}