iOS 属性修饰符Copy 还是Strong

开发iOS项目已两年有余,一直根据惯性思维,也一直用strong  来修饰NSString,NSArray,NSDictionary等,其实一直没注意到其中的细节问题!包括该修饰符号的意义以及内存地址的问题!

此文已NSArray来举例子:
使用strong来修饰数组 此图为可变数组
注意此处的内存地址是没有改变的,是相同的,相当于浅拷贝!数组的内部元素地址也是没有改变的!



但我们使用copy来修饰的时候

此时我们可以看到原始数组和对象属性数组的地址已经不同的,开辟了独立的内存空间来保存地址,这样改变原始数组时,保证了对象属性数组的不变性,同时对象数组里面的元素采用浅拷贝,只拷贝内存地址!

总结:推荐使用copy修饰符号,具体可根据需求来确定!