1.什么是ARC

  • Automatic Reference Counting,自动引用计数,即ARC,可以说是WWDC2011和iOS5所引入 的最大的变革和最激动人心的变化。ARC是新的LLVM 3.0编译器的一项特性,使用ARC,可以说一 举解决了广大iOS开发者所憎恨的手动内存管理的麻烦。

  • 手动管理内存, 可以简称MRC (Manual Reference Counting)
  • 在工程中使用ARC非常简单:只需要像往常那样编写代码,只不过永远不写retain,release和autorelease三个关键字就好~这是ARC的基本原则。

  • 当ARC开启时,编译器将自动在代码合适的地方插入retain, release和autorelease,而作为程序猿,完全不需要担心编译器会做错(除非开发者自己错用ARC了)。

2.ARC的注意点和优点

  • ARC的注意点

    • ARC是编译器特性,而不是运行时特性
    • ARC不是其它语言中的垃圾回收, 有着本质区别
  • ARC的优点

    • 完全消除了手动管理内存的烦琐, 让程序猿更加专注于app的业务
    • 基本上能够避免内存泄露
    • 有时还能更加快速,因为编译器还可以执行某些优化

3.ARC的判断原则

  • ARC的判断原则

    • 只要还有一个强指针变量指向对象,对象就会保持在内存中
  • 强指针

    • 默认所有指针变量都是强指针
    • 被__strong修饰的指针
 Person *p1 = [[Person alloc] init];
__strong Person *p2 = [[Person alloc] init];
  • 弱指针

  被__weak修饰的指针

__weak  Person *p = [[Person alloc] init];
  • 注意:当使用ARC的时候,暂时忘记“引用计数器”,因为判断标准变了。

最新文章

  1. Moneybookers API支付方式开发 步骤
  2. jQuery文件上传插件jQuery Upload File 有上传进度条
  3. NoSuchMethodError
  4. 崽崽帮www.zaizaibang.com精选3
  5. 一个ajax同步与异步引发的血案。
  6. Hexo部署到GitHub出现spawn ENOENT的解决办法
  7. PHP学习之一晚撸下W3chscool
  8. IOS 入门开发教程
  9. 开发设计模式(九)门面模式(Facade Pattern)
  10. Hdu 4514 湫湫系列故事——设计风景线
  11. PHP-FPM的STATUS显示配置
  12. Delphi的String内存结构(够清楚) good
  13. MySQL中的联合索引学习教程
  14. yum安装jdk
  15. mysql 和 sqlserver sql差异比较
  16. android--------自定义控件 之 基本实现篇
  17. B/S模式实现批量打包apk
  18. Nginx+Memcached+Tomcat集群配置
  19. 《JavaScript》字符转义
  20. 基于node.js的web框架express

热门文章

  1. 使用.NET 6开发TodoList应用(15)——实现查询搜索
  2. FastStoneCapture屏幕截图软件
  3. mysql在Linux下大小写敏感设置
  4. 责任链模式(python)
  5. 实验 6 :OpenDaylight 实验——OpenDaylight 及 Postman实现流表下发
  6. 微服务架构攀登之路(五)之Go-micro入门
  7. JSP页面实际上就是Servlet
  8. SpringMVC 解析(一)概览
  9. 搭建服务器之www-向外提供视频服务by html5 video标签
  10. 实习之bii--源码安装bind9