assign,retain,copy对比
来源:互联网 发布:1325雕刻机参数算法 编辑:程序博客网 时间:2024/05/16 02:15
一、assign属性
当数据类型为int、float等原生类型时,可以使用assign,否则可能导致内存泄露。例如当使用malloc分配了一块内存,并把它的地址赋值给了指针a,后来如果希望指针b也共享这块内存,于是讲a赋值给(assgin)b。这时就用到了assgin,此时a和b指向同一块内存。但是现在问题出现了,当a不再需要这块内存时,能都直接释放呢?肯定是不能的,因为a并不知道b是否还在使用这块内存,如果a释放了,那么b在使用这块内存的时候引起程序crash掉。
二、retain属性
retain属性就是为了解决上述问题而提出的,使用了引用计数(reference counting),还是上面那个例子,我们给那块内存设一个引用计数,当内存呗分配并且赋值给a时,引用计数是1.当把a赋值给b时引用计数增加到2.这时如果a不再使用这块内存,它只需要把引用计数减1,表明自己不再拥有这块内存。b不再使用这块内存时也把引用计数减1.当引用计数变为0的时候,代表该内存不再被任何指针所引用,系统可以直接释放掉。此时系统自动调用dealloc函数,内存被回收。
三、copy属性
copy是你不希望a和b共享一块内存时会使用到。a和b各自有自己的内存。
0 0
- assign,retain,copy对比
- assign retain copy
- assign / retain / copy区别
- retain/copy/assign
- retain, copy, assign区别
- assign retain copy iOS
- Copy/Retain/Assign
- atomic copy assign retain
- [iOS_Dev] @copy @retain @assign
- retain, copy, assign区别
- 关键字copy 、retain、assign
- assign copy retain
- (assign,retain,copy):
- 理解assign,copy,retain
- retain, copy, assign区别
- assign copy retain 理解
- retain/copy/assign的含义
- assign,retain,copy的用法
- 闭包实例
- 闭包的循环引用解决
- Android中实现定时器的3中方法
- HMM 解码问题
- swift纯代码创建view
- assign,retain,copy对比
- JavaScript DOM中 改变样式属性,实现动画效果 2
- NSLayoutConstraint
- Markdown编辑器使用说明
- Android_滚动状态ScrollView实现标题的悬浮和渐隐
- swift中一个类定义一个属性必须初始化,如果不想初始化可以加?
- 极光推送接收不到消息
- APP UI屏幕适配
- pytesser 的使用