copy和strong一般情况是不可变类型用copy,可变类型用strong,但是根据个人需要而异。
首先,属性使用copy的时候,特殊的字符串赋值的时候是指针指向,共用同一块内存。
然而NSArray,NSDictionary,NSSet这些容器类的赋值时,分两种情况,copy的时候相当于值拷贝,而strong相当于指针指向同一块内存。故copy的NSArray不会跟着赋值的NSMutableArray值改变而变化,strong的NSArray由于与NSMutableArray公用同一块内存而跟着改变。
下面图片为证。
特殊的字符串。
不可变的具有相同的指针地址,某个字符串变化只有他自己指向新的地址
可变字符串使用copy的是新地址,但是值没有变。
仅供参数,错误之处请指正,有个疑问为什么用weak修饰的字符串和strong一样。