自动引用计数
来源:互联网 发布:江西先锋软件技术学院 编辑:程序博客网 时间:2024/06/05 04:23
1.1、什么是自动引用计数
顾名思义,自动引用计数是指内存管理中对引用采取自动计数的技术。以下摘自苹果的官方说明。
在OC中采用ARC机制,让编绎器来进行内存管理。在新一代Apple LLVM编绎器中设置ARC为有效状态,就无需再次键入retain或者release代码,这在降低程序崩溃、内存泄露等风险的同时,
很大程度上减少了开发程序的工作量。编绎器完全添楚目标对象,并能立刻释放那些不再被使用的对象。如此一来,应用程序将具有可预测性,且能流畅运行速度也将大幅提升。
1.2 内存管理 /引用计数
解决这一问题的办法是使办公室在还有至少一个人的情况下保持开类状态,而在无人时保持关灯状态。
(1)最早进入办公室的人开灯。
(2)之后进入办公室的人,需要照明。
(3)下班离开办公室的人,不需要照明。
(4)最后离开办公室的人关灯(此时已无人需要照明)。
在OC中,“对象”相当于办公室的照明设备,
1.2.2 内存管理的思考方式
看到“引用计数”这个名称,我们便会不自觉地联想到
“某处有某物多少多少”而将注意力放到计数上。
但其实,更加客观、正确的思考方式是:
自己生成的对象,自己所持有。
非自己生成的对象,自己也能持有。
不再需要自己持有的对象时释放。
非自己持有的对象无法释放。
引用计数式内存管理的思考方式仅此而已。
上文出现了“生成”、“持有”、“释放”三个词。而在OC内存管理中还要加上“废弃”一词。
对象操作 方法
生成并持有对象 alloc new copy mutableCopy等方法
持有对象 retain方法
释放对象 release方法
废弃对象 dealloc方法
这些有关OC内存管理的方法,实际上不包括在该语言中,而是包含在Cocoa框架中用于OS X、iOS应用开发。
Cocoa框架中Foundation框架类库的NSObject类担负内存管理的职责。OC内存管理中的alloc/retain/release/dealloc
方法分别指代NSObject类的alloc类方法、retain实例方法、release实例方法和dealloc实例方法。
使用以下名称开头的方法名意味着自己生成的对象只有自己持有:
alloc
new
copy
mutableCopy
copy方法利用基于NSCopying方法约定,由各类实现的copyWithZone:方法生成并持有对象的副本。
与copy方法类似,mutableCopy方法利用基于NSMutableCopying方法约定,由各类实现的mutableCopyWithZone:方法生成并持有对象的副本。
两者的区别在于, copy方法生成不可变更的对象,而mutableCopy方法生成可变更的对象。这类似于NSArray类对象与NSMutableArray类对象的差异。
用这些方法生成的对象,虽然是对象的副本,但同alloc、new方法一样,在“自己生成并持有对象“这点上没有改变。
不常用的方法:
根据上述”使用以下名称开头的方法名“,下列名称也意味着自己生成并持有对象。
allocMyObject
newThatObject
copyThis
mutableCopyYourObject
- 自动引用计数(ARC)
- 自动引用计数(ARC)
- OC自动引用计数
- swift2 自动引用计数
- 第一章 自动引用计数
- swift自动引用计数
- 自动引用计数
- Swift-自动引用计数
- 自动引用计数
- 自动引用计数
- IOS ARC 自动引用计数
- 自动引用计数的实现
- Swift 自动引用计数(十四)
- ARC(自动引用计数)
- Swift(十六、自动引用计数)
- Swift2.1-自动引用计数
- Swift 自动引用计数(ARC)
- Swift的自动引用计数
- android实战——监听TextView文本Button改变状态
- 信息安全恢复
- 怎样减小lvm根分区的大小
- Oracle 表空间数据文件迁移图解
- x264编码参数大测试
- 自动引用计数
- 使用github和jekyll打造自己的独立博客及常见问题
- 1012. 数字分类 (20)
- C语言部分关键字
- Linux 进程间通信总结
- [hdp2.4系列] 机器准备
- 活动状态
- Ubuntu下HBase安装与使用(shell+Java API)
- 常见内核目标都是在哪里?