strong,weak,retain,assign,copy nomatic 等的区别

转载 2016年05月30日 16:48:24

assign: 简单赋值,不更改索引计数(Reference Counting)对基础数据类

copy: 建立一个索引计数为1的对象,然后释放旧对象。对NSString

retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 ,对其他NSObject和其子类

weak和strong的区别:

weak和strong不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放 ,即使还有weak型指针指向它。一旦最后一个strong型指针离去 ,这个对象将被释放,所有剩余的weak型指针都将被清除。

copy与retain的区别:

copy其实是建立了一个相同的对象,而retain不是;

copy是内容拷贝,retain是指针拷贝;

copy是内容的拷贝 ,对于像NSString,的确是这样,如果拷贝的是NSArray这时只是copy了指向array中相对应元素的指针.这便是所谓的"浅复制"。

__block和__weak修饰符的区别

__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。

__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。

__block对象可以在block中被重新赋值,__weak不可以。



文/cjlcooper(简书作者)
原文链接:http://www.jianshu.com/p/c1d609d1569b
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

相关文章推荐

iOS浅copy和深copy,以及nomatic,assign,strong,retain,weak

在iOS中我们定义属性,一般会用到这些,但是具体的意义我们并不知道,这里简单介绍一下: 浅copy和深copy 注意:浅copy和深copy需要实现了NSCopying,NSMutableC...

iOS中assign、retain、copy、weak、strong的区别以及nonatomic的含义

声明@property 属性时,括号中assign、retain、copy、weak、strong以及nonatomic到底是干啥的...

property参数strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解

iOS5中加入了新知识,就是ARC,其实我并不是很喜欢它,因为习惯了自己管理内存。但是学习还是很有必要的。 在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想...
  • hhcncx
  • hhcncx
  • 2016年02月27日 11:55
  • 173

assign weak retain strong copy关键字的区别

在iOS开发中定义@property属性时,经常用到assign、weak、retain、strong、copy等关键字。我们经常会考虑在何时应该使用哪个关键字,尤其是在面试的时候,经常会被问到这些关...

strong,weak,copy,retain和assign的区别

本来要自己写一篇的,看到mj老师的这篇很好,就果断复制过来了,再加上自己的补充 参考文献:  iOS ARC 完全指南 提示:本文中所说的"实例变量"即是"成员变量","局部变量"即是...

认识retain copy assign strong weak 的区别

retain: 引用计数+1 目的:不让这个对象释放掉——》MRC-》ARC  strong  weak  copy : 拷贝 为了原数据更改 影响使用之后的数据 -> 使用copy(拷贝的内容 必...

copy,assign,strong,retain,weak,readonly,nonatomic的区别

copy与retain: 1、copy其实是建立了一个相同的对象,而retain不是; 2、copy是内容拷贝,retain是指针拷贝;   3、copy是内容的拷贝 ,对于像NSString,...

copy、retain、assign、readonly、readwrite、nonatomic、weak、strong的区别

对于新手来说,这些属性搞不明白很正常,今天来好好理一理: 用于MRC编译下: copy与retain: 1、copy其实是建立了一个相同的对象,而retain不是; 2、c...

iOS开发-retain/assign/strong/weak/copy/mutablecopy/autorelease区别

readwrite:是可读可写特性,需要生成getter和setter方法; readonly是之都特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变时候使用; all...

retain/assign/strong/weak/copy/mutablecopy/autorelease区别

readwrite:是可读可写特性,需要生成getter和setter方法; readonly是之都特性,只会生成getter方法,不会生成setter方法,不希望属性在类外改变时候使用; allo...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:strong,weak,retain,assign,copy nomatic 等的区别
举报原因:
原因补充:

(最多只允许输入30个字)