在做智能客服模块功能时,开发参考了TLChat这个第三方库,
在与客服后台交互时发现,使用
[self.data addObject:message]
向NSMutableArray添加聊天回复的数据时,
发现如果客服后台回复非常快的时候,NSMutableArray中前一个数据会被后一个数据所覆盖。
最终使用深拷贝解决了这个问题。将此方法修改为
[self.data addObject:[message mutableCopy]];
对于集合对象
对于不可变的集合对象,copy 是浅拷贝,mutableCopy 是单层深拷贝。
对于可变的集合对象,无论 copy 或者 mutableCopy 都是单层深拷贝。
值得注意的是
copy需要实现NSCopying协议,然后实现以下方法,否则copy会crash
mutableCopy时,需要实现NSMutableCopying协议,否则mutableCopy会crash
其余在此项目中遇到问题:
Xcode9.2运行iOS11系统时,下方键盘弹出导致statusBar颜色变化