iOS开发---内存相关问题总结
2017-05-02 14:52
495 查看
导读:在iOS开发过程中,代码中的内存泄露会使得大量的内存被使用,最后收到didReceiveMemoryWarning,最终导致程序崩溃。以下是开发与面试过程中遇到的一些问题和网上的一些资料,总结了一下(后续会不断添加):
1.大次数循环内存暴涨问题
一道经典的面试题,查看如下代码有何问题:
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);
}
}
1.大次数循环内存暴涨问题
一道经典的面试题,查看如下代码有何问题:
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);
}
}
相关文章推荐
- iOS开发C语言关于内存问题的总结
- IOS开发(49)之关于 self与内存相关的用法总结
- IOS开发之---静态库的编译以及相关问题的处理
- iOS开发之---静态库的编译以及相关问题的处理
- iOS开发之---静态库的编译以及相关问题的处理
- 苹果ios开发相关步骤总结
- iOS开发需要特别注意的问题总结
- iOS开发与OpenGL ES相关问题整理(1)
- iOS开发那些事-Git在Xcode中的配置与使用常见问题总结
- iOS开发过程中遇到的问题总结
- iOS开发之---静态库的编译以及相关问题的处理
- [ios]总结iOS开发当中一些特别注意的问题 【转】
- Linux开发心得总结2 - 频繁分配释放内存导致的性能问题的分析
- iOS开发与OpenGL ES相关问题整理(2)- 绘制图片上下颠倒
- IOS开发中,IAP(In-App Purchase, 程序内置收费)相关总结, 及备忘
- iOS开发之---静态库的编译以及相关问题的处理
- IOS开发之---静态库的编译以及相关问题的处理
- 现在最新版的ios开发内存问题
- hadoop开发运行环境配置及相关问题总结
- iOS 摄像头和相册的相关问题总结