(2)尽量避免使用autorelease

虽然autorelease非常简单有用,但是在iphone上一定要谨慎使用,毕竟iphone内存相当有限.autorelease可能会导致直接的隐型内存泄露.

比如使用

NSString *string = [NSString stringWithFormat:@"value = %d", intVariable];

 

你可以换为

NSString *string = [[NSString alloc] initWithFormat:@"value = %d", intVariable];

...

[string release];


使用自动释放对象还有个坏处就是不便于开发者管理。增加程序崩溃的几率.


不过autorelease对象也不是一无是处。有时它的作用也很强大。

比如当你需要返回一个对象时就最好使用autorelease

(NSString *)AutoTest

{

    return [[[NSString alloc] initWithFormat:@"value = %d", intVariable] autorelease];

}


你还可以在循环中使用autorelease pools

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

for (id item in array)

{

    id anotherItem = [item createSomeAutoreleasedObject];

    [anotherItem doSomethingWithIt];

}

[pool release];

注意:就我目前测试和观察看来。你只能在同一个函数中使用

NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

[pool release];才能达到效果

最后一点就是:千万不要尝试去release一个auto对象。否则你的程序必然崩溃


待续......

iphone内存管理(二)相关推荐

  1. ipad/iphone内存管理二

    本次主要讲解的是 :autorelease // // main.m // MemoryManagement // // Created by b126 on 12-4-23. // Copyrigh ...

  2. iPhone内存管理详细解说(二)

    继上一篇之后,再来讲述iPhone内存管理的细节. 四:动态内存管理 第四节就内容实质来说跟第三节的object的拥有和丢弃政策是一样的,不过是从以代码为引导的动态形式讲述.所以你会在这一节看到许多代 ...

  3. iPhone内存管理详细解说(一)

    iPhone内存管理详细解说系列转载来源:http://keywind.me/blog/2011/05/07/iphonenei-cun-guan-li-xiang-xi-jie-shuo-yi/ 感 ...

  4. iphone内存管理

    http://hi.baidu.com/spopavenvldiqyr/item/c8d620b6282c4d4abb0e122a iphone内存管理(一) BY 洋葱头 http://hi.bai ...

  5. 操作系统概念学习笔记 16 内存管理(二) 段页

    操作系统概念学习笔记 16 内存管理 (二) 分页(paging) 分页(paging)内存管理方案允许进程的物理地址空间可以使非连续的.分页避免了将不同大小的内存块匹配到交换空间上(前面叙述的内存管 ...

  6. iphone内存管理(一)

    内存管理在iphone中一直是一个热点话题.通过一段时间的总结我准备与大家分享一下我对内存管理的一点认识和经验. 开始之前先给大家分享一些重要的信息 1.Iphone 3g有128M的内存.但是至少有 ...

  7. Linux任督二脉之内存管理(二) PPT

    五节课的第二节课-内存的动态申请和释放 * slab.kmalloc/kfree./proc/slabinfo和slabtop * 用户空间malloc/free与内核之间的关系 * mallopt ...

  8. ipad/iphone内存管理一

    在我们iPhone/iPad项目中,程序会无缘无故地crash!这让我们非常的苦恼!现在我结合网上的一些资料,并根据自己的理解,和大家一起探讨内存管理这方面的知识.大家有什么不理解的可以直接给我留言. ...

  9. iphone 内存管理2

    iPhone 开发过程中,内存的使用至关重要.不但要合理分配使用内存,还要注意内存泄露的问题, 因为内存泄露会导致程序由于内存不足而崩溃.根据个人开发的经验来看,在开发iPhone程序的过程中,关于内 ...

最新文章

  1. 基于多任务学习和负反馈的深度召回模型
  2. MySql 连接报 SSL 警告问题
  3. OpenCV中的HOG+SVM在自动驾驶车辆检测中的应用实例
  4. Java 中的List动态转Map集合
  5. 分布式锁实现方式介绍和Zookeeper实现原理
  6. emacs java自动import,在Java模式如何我配置Emacs,这样就不会自动对齐方法参数
  7. SpringCloud工作笔记055---SpringBoot中配置事物管理
  8. 贺利坚老师汇编课程54笔记:ZF零标志ZERO FLAG
  9. warning: initialization from incompatible pointer type error, forbidden解决
  10. 有道Java_有道词典java版下载-有道词典java豪华版v1.0.7 安卓版 - 极光下载站
  11. 06-20210308华为海思Hi3516DV300鸿蒙系统的uboot编译
  12. 数字化建筑与数字化建造,数字化建筑设计与建造
  13. 了解下HTML5大前端是什么
  14. android 投屏,华为手机的电脑模式是如何实现的
  15. C# 合并Excel工作表
  16. SPSS在农业生产中的应用
  17. linux局域网即时通讯,基于身份的Linux下局域网即时通讯系统的研究与实现
  18. R语言使用dplyr包计算dataframe分组聚合样本独特值个数、计数个数、四分位距IQR
  19. HTML中注解的写法正确的是,css注释的写法(单行和多行)
  20. WRMPS经典Cookie欺骗漏洞批量拿下shell-黑客博客

热门文章

  1. Centos7 配置网卡链路聚合(转载)
  2. ReFusion: 3D Reconstruction in Dynamic Environments for RGB-D Cameras Exploiting Residuals 论文阅读
  3. 数据指标体系:指标好坏评价标准
  4. PPP协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP帧的数据部分是0001110111110111110110,问删除发送端
  5. 担心基站高辐射?快来看5G建设电磁辐射科普宣传片
  6. 第三章:进程线程模型
  7. java线程和linux线程,【转】Java线程与Linux内核线程的映射关系
  8. 利用计算机实施盗窃罪300万,盗窃网络虚拟财产的新定性及刑法规制.pdf
  9. 洪泰基金俞敏洪:创业24年,我的五点思考
  10. unity实现简单巡逻兵