Copy,Strong的区别需要了解点内存管理的知识,Strong是ARC下引入的修饰,相当于手动管理内存(MRC)下的retain,在相关代码下,常常看到有的人用copy修饰NSString,NSArray,NSDictionary..等存在可变与不可变之分的对象,常常会用copy,而不是strong,下面代码来解释一下strong与copy的区别:
先说明一下什么叫做浅拷贝,什么叫做深拷贝;
浅Copy:可以理解为指针的复制,只是多了一个指向这块内存的指针,共用一块内存。
深Copy:理解为内存的复制,两块内存是完全不同的,也就是两个对象指针分别指向不同的内存,互不干涉。
结论:
在不可变对象之间进行转换,strong与copy作用是一样的,但是如果在不可变与可变之间进行操作,那么楼主比较推荐copy,这也就是为什么很多地方用copy,而不是strong修饰NSString,NSArray等存在可变不可变之分的类对象了,避免出现意外的数据操作.
参考:属性用copy、strong修饰的区别
NSString为何要用copy?而不是strong?
因为NSString修饰的属性时不可变,用copy会多进行一次判断(是否为可变,是可变的在分配一块内存空间)