肿瘤康复网,内容丰富有趣,生活中的好帮手!
肿瘤康复网 > iOS中copy retain strong assign weak的区别以及使用

iOS中copy retain strong assign weak的区别以及使用

时间:2020-03-28 13:52:13

相关推荐

使用assign: 对基础数据类型 (NSInteger)和C数据类型(int, float, double, char,等)

使用copy: 对NSString

使用retain: 对其他NSObject和其子类

assign就是简单的赋值,不更改引用计数,所以直接使用基础数据

copy是直接拷贝内容,成为一个新的对象。

retain释放旧的对象,将旧对象的值赋给新的对象,并使新的对象的引用计数加1

retain是指针拷贝 copy是分配新的内存属于内容拷贝,在拷贝之前都会释放旧的对象

在ARC中,retain和strong是一致的(声明为强引用);assign和weak是基本一致的(声明为弱引用)

=======弱引用(weak,assign)的出现缘由,以及区别=======================================

弱引用的出现缘由:防止循环应用。

强引用循环:A对象强引用了B对象,B对象也强引用了A。因为都是强引用,也就是无论是A是B都要在对方的引用断了后才能销毁,但要断了引用,就必须对方对象销毁。就会出现这种僵局,为了避免出现这种情况,就应该有一个对象“示弱”,使其为“弱引用”。 weak和assign的区别就是当对象被销毁后,weak会把指针指向的对象置为nil,而assign却不会,所以assign会引起野指针,比较危险。

比较常见的,视图中的父子视图之间的引用:父视图强引用子视图,子视图弱引用父视图。

===atomic与nonatomic====================================================

atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未完成的时候被另外一个线程读取,造成数据错误。而这种机制是耗费系统资源的,所以在iPhone这种小型设备上,如果没有使用多线程间的通讯编程,那么nonatomic是一个非常好的选择。

如果觉得《iOS中copy retain strong assign weak的区别以及使用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。