iOS开发copy-strong的详解

释放双眼,带上耳机,听听看~!

Copy,Strong的区别需要了解点内存管理的知识,Strong是ARC下引入的修饰,相当于手动管理内存(MRC)下的retain,在相关代码下,常常看到有的人用copy修饰NSString,NSArray,NSDictionary..等存在可变与不可变之分的对象,常常会用copy,而不是strong,下面代码来解释一下strong与copy的区别:

先说明一下什么叫做浅拷贝,什么叫做深拷贝;

浅Copy:可以理解为指针的复制,只是多了一个指向这块内存的指针,共用一块内存。

深Copy:理解为内存的复制,两块内存是完全不同的,也就是两个对象指针分别指向不同的内存,互不干涉。

结论:

在不可变对象之间进行转换,strong与copy作用是一样的,但是如果在不可变与可变之间进行操作,那么楼主比较推荐copy,这也就是为什么很多地方用copy,而不是strong修饰NSString,NSArray等存在可变不可变之分的类对象了,避免出现意外的数据操作.

 

NSString为何要用copy?而不是strong?

因为NSString修饰的属性时不可变,用copy会多进行一次判断(是否为可变,是可变的在分配一块内存空间)

人已赞赏
iOS文章

最新开发者账号申请流程

2020-1-27 17:41:28

iOS文章

iOS开发设置tableview搜索的关键字高亮

2020-1-28 10:24:46

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索