今天在操作NSMutableArray数字增加和删除时候出现崩溃,报错[__NSArrayI addObjectsFromArray:]: unrecognized selector。
找了一个小时,发“__NSArrayI”这个提示比较重要。查了一下发现
__NSArrayI is
a code-word for an immutable array - that is, a "regular" NSArray which
you cannot change.
__NSArrayM is
a code-word for a mutable array - that is, NSMutableArray.
In NSMutableArray,
you can add and remove items.
NSArrayM才是NSMutableArray.
奇怪,我明明是声明的是NSMutableArray. 怎么突然变成了NSArray.
排查代码才发现,在拷贝数组时候用了 .copy 来拷贝,而NSMutableArray拷贝数组时候需要用 .mutableCopy !!!
本文详细解析了在使用Swift语言中,当尝试使用.copy方法拷贝NSMutableArray数组时,为什么会触发__NSArrayI错误,并提供了解决方案。重点在于正确理解NSMutableArray与NSArray的区别以及如何避免此类问题。
609

被折叠的 条评论
为什么被折叠?



