IOS语法 @property里的assign,copy,retain的区别
2014-04-20 17:20
405 查看
@property(nonatomic,copy)NSString* str;
这里的assign copy retain的区别:
assign:这个是简单赋值,不更改引用索引计数(reference counting);
copy:建立索引计数为一的对象,然后释放旧对象;
retain:释放旧对象,将旧对象的值赋予输入对象,再提高输入对象的引用索引计数;
-retain的实际语法:
-(void)setName(NSString*)newName
{
if(name!=newName)
{
[name release];
name=[newName retain];
name的引用计数has been bumped up by 1;
}
}
assign :是对oc基础数据类型(CGRect,CGPoint)和C数据类型(float int);
copy:是对字符串NSString;
retain:是对其他NSObject 和其子类;
atomic是oc使用的一种线程保护技术,是为了防止在写未完成的时候被其他线程读取,造成数据错误,而这种机制是很耗资源的,在iphone这小型设备上如果没有使用多线程之间的通讯,那么使用nonatomic是一个非常好的选择
注:
oc的内存管理,第一:retain copy都是在手动内存管理中,赋值oc对象常用的防止内存泄露的方法,当A 要赋值给B时,A完成赋值操作后,将自己release,而B则将自己原持有的对象地址release,并持有A的对象及引用计数,这样就保证两个数据块的引用计数始终为1或0,程序中最后一位引用者release时,才能保证这块内存被很好的释放;
这里的assign copy retain的区别:
assign:这个是简单赋值,不更改引用索引计数(reference counting);
copy:建立索引计数为一的对象,然后释放旧对象;
retain:释放旧对象,将旧对象的值赋予输入对象,再提高输入对象的引用索引计数;
-retain的实际语法:
-(void)setName(NSString*)newName
{
if(name!=newName)
{
[name release];
name=[newName retain];
name的引用计数has been bumped up by 1;
}
}
assign :是对oc基础数据类型(CGRect,CGPoint)和C数据类型(float int);
copy:是对字符串NSString;
retain:是对其他NSObject 和其子类;
atomic是oc使用的一种线程保护技术,是为了防止在写未完成的时候被其他线程读取,造成数据错误,而这种机制是很耗资源的,在iphone这小型设备上如果没有使用多线程之间的通讯,那么使用nonatomic是一个非常好的选择
注:
oc的内存管理,第一:retain copy都是在手动内存管理中,赋值oc对象常用的防止内存泄露的方法,当A 要赋值给B时,A完成赋值操作后,将自己release,而B则将自己原持有的对象地址release,并持有A的对象及引用计数,这样就保证两个数据块的引用计数始终为1或0,程序中最后一位引用者release时,才能保证这块内存被很好的释放;
相关文章推荐
- IOS语法- @property里的assign,copy,retain区别
- 【iOS学习笔记】语法 @property里的assign,copy,retain区别
- IOS系列-@property里的assign,copy,retain区别
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- IOS开发 @property中assign、copy 、retain等关键字的理解
- IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic、@synthesize、@property、@dyna
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- iOS 关键字 copy,assign,strong,retain,weak,readonly,readwrite,nonatomic,atomic,unsafe_unretained的使用与区别
- iOS中 property中的属性strong 、weak、copy 、assign 、retain 、unsafe_unretained 与autoreleasing区别和作用详解
- iOS开发-assign、retain、copy、strong、weak的区别
- iOS开发 Objective-C assign、retain、copy区别
- IOS 关键字self,super,copy, retain, assign , readonly , readwrite, nonatomic、@synthesize、@property、@dyna
- iOS中assign,copy,retain之间的区别以及weak和strong的区别
- iOS开发--assign、retain、copy的区别
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- IOS atomic与nonatomic,assign,copy与retain的定义和区别
- IOS atomic与nonatomic,assign,copy与retain的定义和区别