retain/strong /assign/weak/copy 有什么区别
2015-03-07 14:22
375 查看
简述 retain/strong /assign/weak/copy 有什么区别?
答:
任何一个值,在属性中,本质上保存的都是一个“数字”。
-如果是对象,保存的是堆中的地址;
-如果是基本对象,保存的是基本对象的数值;
定义属性的时候,通常会指定 属性的类型
-retain 是 MRC ,在设置数值的时候,会对对象引用计数 +1 ;
-strong 是 ARC,与retain等效;
-assign 是 ARC/MRC ,在设置数值的时候,不会做任何附加操作。
-ARC 中,通常用来保存基础变量
-MRC 中,如果不需要引用,通常就用assign
-weak 是 ARC ,用来保存不需要强引用的对象
weak 与 assign 的区别:
assign 指向的对象如果被释放,地址不会有任何变化,效率高但是风险大(野指针)
weak 指向的对象如果被释放,地址会立刻变化为 nil
答:
任何一个值,在属性中,本质上保存的都是一个“数字”。
-如果是对象,保存的是堆中的地址;
-如果是基本对象,保存的是基本对象的数值;
定义属性的时候,通常会指定 属性的类型
-retain 是 MRC ,在设置数值的时候,会对对象引用计数 +1 ;
-strong 是 ARC,与retain等效;
-assign 是 ARC/MRC ,在设置数值的时候,不会做任何附加操作。
-ARC 中,通常用来保存基础变量
-MRC 中,如果不需要引用,通常就用assign
-weak 是 ARC ,用来保存不需要强引用的对象
weak 与 assign 的区别:
assign 指向的对象如果被释放,地址不会有任何变化,效率高但是风险大(野指针)
weak 指向的对象如果被释放,地址会立刻变化为 nil
相关文章推荐
- 属性的特性assign,retain,copy,strong,weak,nonatomic,atomic,readonly,readwrite的区别与介绍
- iOS开发-assign、retain、copy、strong、weak的区别
- iOS开发之assign retain copy strong weak 的区别
- copy,assign,strong,retain,weak,readonly,nonatomic的区别
- copy,assign,strong,retain,weak,readonly,nonatomic的区别
- copy,assign,strong,retain,weak,readonly,nonatomic的区别
- retain、copy、assign、 strong、weak、autorelease的用法和区别
- property中的strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
- 什么情况下我们使用copy,assign,retain,strong,weak?
- copy,assign,strong,retain,weak,readonly,nonatomic的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- property中的strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
- strong assign weak retain copy 区别
- 【整理】Object-C中的属性(Property)的Setter:assign,copy,retain,weak,strong之间的区别和联系
- copy,assign,strong,retain,weak,readonly,nonatomic的区别
- retain/assign/strong/weak/copy/mutablecopy/autorelease区别
- copy,assign,strong,retain,weak,readonly,nonatomic的区别
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS strong .copy .retain .weak .assign的区别,以及各自的用法
- ios中assign、copy 、retain、strong、weak的区别