ios 中copy和strong使用之我见

copy和strong一般情况是不可变类型用copy,可变类型用strong,但是根据个人需要而异。

首先,属性使用copy的时候,特殊的字符串赋值的时候是指针指向,共用同一块内存。

然而NSArray,NSDictionary,NSSet这些容器类的赋值时,分两种情况,copy的时候相当于值拷贝,而strong相当于指针指向同一块内存。故copy的NSArray不会跟着赋值的NSMutableArray值改变而变化,strong的NSArray由于与NSMutableArray公用同一块内存而跟着改变。

下面图片为证。

容器类的不可变类型使用strong,打印表明值和指针相同
容器类的不可变类型使用copy,打印表明值和指针都不相同

特殊的字符串。

不可变的具有相同的指针地址,某个字符串变化只有他自己指向新的地址

不可变的具有相同的指针地址,某个字符串变化只有他自己指向新的地址


可变字符串使用copy的是新地址,但是值没有变。

可变字符串发生变化其他的不会变化

仅供参数,错误之处请指正,有个疑问为什么用weak修饰的字符串和strong一样。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容