内存管理 ARC
2015-11-09 15:58
211 查看
ARC:Automatic Reference Counting(自动引用计数)
ARC的实现细节
➢ 编译器会自动在适当的地方插入适当的retain、release、autorelease语句
➢
也就是说, 编译器会自动生成内存管理的代码,
不用程序猿手动编写
ARC的注意点
➢ ARC是编译器特性,而不是运行时特性
➢
ARC不是其它语言中的垃圾回收, 有着本质区别
ARC的优点
➢
完全消除了手动管理内存的烦琐, 让程序猿更加专注于app的业务
➢ 基本上能够避免内存泄露
➢ 有时还能更加快速,因为编译器还可以执行某些优化
ARC的判断原则
➢ 只要还有一个强指针变量指向对象,对象就会保持在内存中
强指针
➢ 默认所有指针变量都是强指针
➢ 被__strong修饰的指针
弱指针
➢ 被__weak修饰的指针
ARC的使用细节
不能调用release、retain、autorelease、retainCount
可以重写dealloc,但是不能调用[super
dealloc]
ARC中的@property
➢
strong
: 用于OC对象,
相当于MRC中的retain
➢ weak
: 用于OC对象,
相当于MRC中的assign
➢ assign
:
用于基本数据类型,
跟MRC中的assign一样
➢ copy
: 一般用于NSString,
跟MRC中的copy一样
MRC转为ARC: Xcode: Edit->Refactor->Conver to Objective-C ARC...
ARC的实现细节
➢ 编译器会自动在适当的地方插入适当的retain、release、autorelease语句
➢
也就是说, 编译器会自动生成内存管理的代码,
不用程序猿手动编写
ARC的注意点
➢ ARC是编译器特性,而不是运行时特性
➢
ARC不是其它语言中的垃圾回收, 有着本质区别
ARC的优点
➢
完全消除了手动管理内存的烦琐, 让程序猿更加专注于app的业务
➢ 基本上能够避免内存泄露
➢ 有时还能更加快速,因为编译器还可以执行某些优化
ARC的判断原则
➢ 只要还有一个强指针变量指向对象,对象就会保持在内存中
强指针
➢ 默认所有指针变量都是强指针
➢ 被__strong修饰的指针
弱指针
➢ 被__weak修饰的指针
ARC的使用细节
不能调用release、retain、autorelease、retainCount
可以重写dealloc,但是不能调用[super
dealloc]
ARC中的@property
➢
strong
: 用于OC对象,
相当于MRC中的retain
➢ weak
: 用于OC对象,
相当于MRC中的assign
➢ assign
:
用于基本数据类型,
跟MRC中的assign一样
➢ copy
: 一般用于NSString,
跟MRC中的copy一样
MRC转为ARC: Xcode: Edit->Refactor->Conver to Objective-C ARC...
相关文章推荐
- 10万点击率的“干货”,其实人人都写得出来
- IIS服务器配置出错
- 关于Class.forName(className).newInstance()介绍
- 约吗? 免费领取一大波90后单身女神产品经理(增加5位女神)
- CTS测试环境的搭配
- 第六章 用户管理
- Android性能优化典范C2
- 集合_java集合框架
- How Garbage Collection Really Works
- 微信公众平台开发(一)
- openstack 启用spice
- 大数据视频学习目录
- SDL入门教程(四):2、SDL动画的硬件渲染(Hardware Render)
- JS通过get、post向jsp传递中文出现乱码的问题的解决
- 树莓派源代码安装opencv
- hdu3570, 超级简单的斜率优化dp
- 将archlinux 2013-06-01版,安装配置为个人工作站
- CSS定位
- 在liberty中通过LTPA设置单点登录
- spring AOP 注解