IOS语法 @property里的assign,copy,retain的区别
IOS语法 @property里的assign,copy,retain的区别
love丁小南 发表于4年前
IOS语法 @property里的assign,copy,retain的区别
  • 发表于 4年前
  • 阅读 740
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

@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时,才能保证这块内存被很好的释放;




  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 2
码字总数 998
×
love丁小南
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: