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 ---用在对象身上(用在对象身上)

*/

OBject copy 和retain区别

时间: 2024-10-29 09:59:17

OBject copy 和retain区别的相关文章

NSString属性声明中的copy和retain区别

规范上NSString做属性都是写成copy的,理论上应该是复制了字符串而不是单纯的增加引用计数,其实问题只会出现在把NSMutableString赋值给NSString的时候. 首先做以下几个变量声明: @property (retain, nonatomic) NSString *retainStr; @property (copy, nonatomic)   NSString *copyStr; @property (retain, nonatomic) NSMutableString *

@property里的assign,copy,retain区别

assign: 简单赋值,不更改索引计数(Reference Counting). copy: 建立一个索引计数为1的对象,然后释放旧对象 retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 使用assign:  对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等) 使用copy:   对NSString 使用retain: 对其他NSObject和其子类 nonatomic:atomic是

【iOS面试系列-1】iOS中@property 后assign,copy,retain,weak,strong的意义与区别(必考-必须详细掌握)

来源:网络 assign: 普通(简单)赋值,一般常用于基本数据类型,常见委托设计模式,一次来防止循环引用.不更改索引计数(Reference Counting). 对基础数据类型 (NSInteger,CGFloat)和C数据类型(int, float, double, char, 等等) retain:保留计数,获得到了对象的所有权,引用计数在原有基础上+1.释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 .我们给那块内存设一个引用计数,当内存被分配并且赋值给a时,引用

atomic与nonatomic,assign,copy与retain的定义和区别

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

objective-c中nonatomic,assign,copy,retain的区别

nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问. (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误.而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择.) assign: 简单赋值,不更改索引计数 对基础数据类型 (NSInteger)和C数据类型(int, float

object-c语言的nonatomic,assign,copy,retain的区别

nonatomic: 非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问.                    (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误.而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择.) assign: 简单赋值,不更改索引计数               对基

copy 与 retain的区别,以及copy与mutablecopy的区别

copy 与 retain的区别 copy: 建立一个索引计数为1的对象,然后释放旧对象      retain:释放旧的对象,将旧对象的值赋予输入对象,再提高输入对象的索引计数为1 Copy其实是建立了一个相同的对象,而retain不是:比如一个NSString对象,地址为0×1111,内容为@”STR”, Copy到另外一个NSString之 后,地址为0×2222,内容相同,新的对象retain为1, 旧有对象没有变化 而retain到另外一个NSString之 后,地址相同(建立一个指针

iOS中assign,copy,retain之间的区别以及weak和strong的区别

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

nonatomic,assign,copy,retain的区别

nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问.                    (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误.而这种机制是耗费系统资源的,所 以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择.) assign: 简单赋值,不更改索引计数               对基础