iphone内存管理(一)
内存管理在iphone中一直是一个热点话题。通过一段时间的总结我准备与大家分享一下我对内存管理的一点认识和经验.
开始之前先给大家分享一些重要的信息
1。Iphone 3g有128M的内存。但是至少有一半已经用来运行OS了。这意味着你的程序可能只有区区40M的空间让你使用。但是请记住:你可能会在你程序只使用了3M时就收到一个内存警告.
2。iphone并不使用类似C#的垃圾回收机制,
3。内存管理的基本原则:每一个 alloc,retain,copy你都需要自己去release
4。Objective-C runtime实例化一个对象只会在栈上而不会在堆上。
5。你可以使用autorelease对象,但是要注意的是这种对象如果不将它的内存池release它是不会释放掉的.它可能造成一个很大的内存泄露。但是你用leak又查不出来。
6。iphone没有交换文件系统,所以也就没有虚拟内存.
下面是一些建议
1.回应内存警告
2.尽量避免使用autorelease
3.使用延迟加载和再利用
4.如果图大且同一张图使用次数不多就避免使用imageNamed
5.table cell妥善使用再利用机制
6.使用Instruments
7.使用静态分析工具
8.使用NSZombieEnabled检测错误详情
以下我将对上面的建议意义详细讲述
(1)回应内存警告
千万不要忘了调用如下代码,这是最简单的形式。如果你有其他需要释放内存的地方你可以写在里面.
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
而最好最后能通知到application delegate中。然后调用如下
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
[[ImageCache sharedImageCache] removeAllImagesInMemory];
}
这样可以清除缓存的图片。得以缓解紧张的内存使用情况.
当然,你需要调用如下代码来申请这个通知
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(whatever:)
name:UIApplicationDidReceiveMemoryWarningNotification
object:nil];
待续......
iphone内存管理(一)相关推荐
- iPhone内存管理详细解说(二)
继上一篇之后,再来讲述iPhone内存管理的细节. 四:动态内存管理 第四节就内容实质来说跟第三节的object的拥有和丢弃政策是一样的,不过是从以代码为引导的动态形式讲述.所以你会在这一节看到许多代 ...
- iphone内存管理
http://hi.baidu.com/spopavenvldiqyr/item/c8d620b6282c4d4abb0e122a iphone内存管理(一) BY 洋葱头 http://hi.bai ...
- iPhone内存管理详细解说(一)
iPhone内存管理详细解说系列转载来源:http://keywind.me/blog/2011/05/07/iphonenei-cun-guan-li-xiang-xi-jie-shuo-yi/ 感 ...
- iphone内存管理(二)
(2)尽量避免使用autorelease 虽然autorelease非常简单有用,但是在iphone上一定要谨慎使用,毕竟iphone内存相当有限.autorelease可能会导致直接的隐型内存泄露. ...
- ipad/iphone内存管理一
在我们iPhone/iPad项目中,程序会无缘无故地crash!这让我们非常的苦恼!现在我结合网上的一些资料,并根据自己的理解,和大家一起探讨内存管理这方面的知识.大家有什么不理解的可以直接给我留言. ...
- iphone 内存管理2
iPhone 开发过程中,内存的使用至关重要.不但要合理分配使用内存,还要注意内存泄露的问题, 因为内存泄露会导致程序由于内存不足而崩溃.根据个人开发的经验来看,在开发iPhone程序的过程中,关于内 ...
- iphone内存管理的具体问题解决方案
iPhone 开发内存管理 开发iPhone 应用程序并不难,基本上就是三个词 - "memory, memory, memory" .iPhone OS 对内存的要求很严格,有m ...
- iphone 内存管理1
开发iPhone 应用程序并不难,基本上就是三个词 - "memory, memory, memory" .iPhone OS 对内存的要求很严格,有memory leak ,杀掉 ...
- iPad/iPhone内存管理四之viewDidUnload/dealloc详细解说
在进行内存管理时,我们必须要知道这两者的区别时什么. viewDidUnload是在程序接到内存警告的时候调用的,在这时候,我们可以把我们不需要的东西去掉或者让他等于nil. dealloc是在计数等 ...
最新文章
- Cron 表达式极速参考
- 每个程序员都必须知道的 8 种数据结构
- UPDATE 时主键冲突引发的思考
- php头代码,PHP常用header头定义代码示例汇总
- 【详解!思路清晰】1095 解码PAT准考证 (25分)
- centos8部署nginx
- SQL 数据分析常用语句
- Delphi开发Windows服务程序教程
- vlan端口的三种模式和基本配置
- 谈谈我对面向对象的理解
- 魔兽争霸V星际争霸V红警
- HDOJ 5773 The All-purpose Zero
- 《地球信息科学学报》发表宋关福博士论文:当GIS遇到人工智能
- 微软自带远程控制桌面软件
- 华硕装鸿蒙系统,智能家居 篇八:解决华硕路由器设置不当造成传感器延迟
- H.264——H.264的基本介绍
- 计算机更改设置打不开了,更改适配器设置打不开,显示适配器
- gp数据库创建数据库_创建数据库简介
- dmidecode服务器型号,利用dmidecode 查看系统的硬件信息,不错
- 海蜘蛛路由 U 盘安装方法
热门文章
- 2019-01-09 工作日志:记录web3连接 respon
- MySQL数据库的存储引擎
- 软件测试周刊(第86期):一个人为寻求他所需要的东西,走遍了全世界。回到家里,找到了。
- iOS调试程序的方法
- 计算机在聋校教学中有哪些作用,现代信息技术在聋校语文教学中的应用
- 从MSYS2访问Windows目录
- 人工智能机器人技术概述
- mysql data masking_Dynamic Data Masking 动态数据脱敏
- 认识计算机课件小游戏,2013年小学信息技术教案《认识计算机二》教案
- html如何防止内部撑开,CSS3 流式图片的设置,避免图片撑开所在的容器(附样例)...