OBject copy 和retain区别

@interface Person : NSObject

//retian : release 旧值,retain 新值

@property(nonatomic,retain) Book *book;

//copy:release旧值,copy 新值

@property(nonatomic,retain) NSString *name;

/*

 在非ARC的情况下:

 1.copy release 旧值,copy新值

 2.assign 直接复值

 3retaion release旧值,retain新值

 

 在ARC的情况下:

 1.copy

 2.assign 基本数据类型

 3.strong   类似于retain ---用在对象身上

 4.weak     类似于assign ---用在对象身上(用在对象身上)

*/

时间: 2025-01-02 18:36:34

OBject copy 和retain区别的相关文章

atomic与nonatomic,assign copy与retain的区别

  atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作. atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全. 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果.加了atomic,setter函数会变成下面这样: {lock} f (property != newValue) { [property release]; property = [newValue retain]; } {unlock} non

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

@property (nonatomic, assign) NSString *title;    什么是assign,copy,retain之间的区别?      assign: 简单赋值,不更改索引计数(Reference Counting).    copy: 建立一个索引计数为1的对象,然后释放旧对象    retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1            weak 和strong的区别:     (weak和strong)不同的是

java之Thread.sleep(long)与object.wait()/object.wait(long)的区别及相关概念梳理(good)

  一.Thread.sleep(long)与object.wait()/object.wait(long)的区别sleep(long)与wait()/wait(long)行为上有些类似,主要区别如下:1.Thread.sleep(long)是属于Thread类的静态方法.其基本语义是使当前运行的线程暂停一段时间.实现细节是把当前线程放入就绪线程队列中,直到睡眠时间到期才可被调度为执行线程(在时间到期前无法被调度为执行线程).此方法可以在sychronized代码块中,调用此方法不释放对象锁:也

C# DataTable Copy() 与 Clone()区别

clone   是传递一个引用,相当于创建了一个指向原字符串的一个指针,copy是复制一个对象.   DataTable dt=new DataTable(); DataTable dtcopy=dt.copy(); DataTable dtclone=dt.clone(); 这两种方式都是创建了一个新的对象,copy复制的是值和一些约束等,clone复制的是架构,直接这样clone,则dtclone没有值. DataTable.Copy 方法 返回值       新的 DataTable,它具

DataTable类Clone方法与Copy方法的区别分析_实用技巧

DataTable.Clone 方法:克隆 DataTable 的结构,包括所有 DataTable 架构和约束. DataTable.Copy 方法:复制该 DataTable 的结构和数据. 我们可以编写如下的程序,进行验证: 复制代码 代码如下:         static string connStr = "Server=.\\sqlexpress;Initial Catalog=hr;Integrated Security=True";         static voi

python copy-求大神名明示python中copy 与 '=' 的区别

问题描述 求大神名明示python中copy 与 '=' 的区别 如图, a=b // a is b c=b.copy() // c not b 为什么呢== 其次,在上图的基础上,为什么 a=1000 后,b依然不变,在这点上貌似 = 与 copy 都这样...混成一锅粥了,求高人指点迷津 解决方案 = 是引用,python中缺省都是引用 copy是复制一个对象.所以产生一个新对象,里面的数据复制了一份 解决方案二: - A shallow copy constructs a new comp

Objective-C 属性特性(assign , retain , copy , readonly , readwrite , atomic , nonatomic)

文档地址:Property Declaration Attributes section of the Objective-C Programming Language assign:指定setter方法用简单的赋值,这是默认操作.你可以对标量类型(如int)使用这个属性.你可以想象一个float,它不是一个对象,所以它不能retain.copy. retain:指定retain应该在后面的对象上调用,前一个值发送一条release消息.你可以想象一个NSString实例,它是一个对象,而且你可

iOS开发之详谈属性设置readwrite、readonly、retain、copy、assign、nonatomic_IOS

具体详细介绍请看下文文字说明吧,本文介绍的非常详细. 1 . 可读性: readonly.readwrite @property(readwrite,....) valueType value; 这个属性是变量的默认属性,就是如果你 (readwrite and readonly 都没有使用,那么你的变量就是 readwrite属性 ) ,通过加入 readwrite 属性你的变量就会有 get 和 set 方法. property(readonly,...) valueType value;

浅析iOS中的浅拷贝和深拷贝(copy和mutableCopy)_IOS

ios提供了copy和mutablecopy方法,顾名思义,copy就是复制了一个imutable的对象,而mutablecopy就是复制了一个mutable的对象. copy与retain的区别: copy是创建一个新对象,retain是创建一个指针,引用对象计数加1.Copy属性表示两个对象内容相同,新的对象retain为1 ,与旧有对象的引用计数无关,旧有对象没有变化.copy减少对象对上下文的依赖. retain属性表示两个对象地址相同(建立一个指针,指针拷贝),内容当然相同,这个对象的