思考
其实很多人对于NSString用copy还是strong修饰的理解,都是从copy开始的。
我发现绝大部分人都认为copy才能保证NSString每次修改后,生成一个新的字符串。而如果是strong修饰,每次对string修改,都会带来同步修改的问题。
那么真的是这样么?可以简单用xcode做一个测试:
实际上NSString不管是copy还是strong,结果都是一个新的字符串。也就是NSString对象用copy和strong在使用中没有区别。
关于这方面理解有简述里一篇文章分析的很到位, 贴出来供参考。
https://www.jianshu.com/p/5a96a258b353/
闲聊
大部分人用copy是为了避免NSMutableString赋值给NSString时,可能会带来的字符串问题,因为NSMutableString内存分配和NSString是不同的。
对此我不是太赞同。我认为记录NSMutableString时,应当确切的使用NSMutableString变量或属性去承接。如果非要赋值给NSString时,使用[NSMutableString copy]方法将字符串深拷贝赋值给NSString,是比较恰当的。
关于这点,也是iOS在发展过程中OC被swift语言替代的一个主要特征,也就是强类型语言的特点,指定变量的不可变或可变类型,杜绝因此带来的不可控问题。