iOS NSMutableArray使用addObject:方法时数据被覆盖

在做智能客服模块功能时,开发参考了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颜色变化

聊天界面调用讯飞语音转换为文字,文字在cell上不显示

iOS聊天界面后台数据发送过快,导致展示cell的frame没有重新计算

iOS向后台发送图片,图片被翻转以及图片过大,发送缓慢问题的解决

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

推荐阅读更多精彩内容