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向后臺發送圖片,圖片被翻轉以及圖片過大,發送緩慢問題的解決

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容