数组
今天在操作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.
实际上NSArrayI是NSArray.
NSArrayM才是NSMutableArray.
奇怪,我明明是声明的是NSMutableArray. 怎么突然变成了NSArray.
排查代码才发现,在拷贝数组时候用了 .copy 来拷贝,而NSMutableArray拷贝数组时候需要用 .mutableCopy !!!
NSMutableArray addObjectsFromArray的问题

A是一个NSArray; B是一个NSMutableArray
A中放的是每次取出的临时数据
将每次取出的临时数据放入到B中: [B addObjectsFromArray: A];
问题是 当我执行了N次上面的流程后,发现 内存的峰值越来越高,虽然之后会降下来,这是什么原因呢?
如果是这里的原因的话,无外乎A没释放或者B没removeAll就add A。当然如果B 每次addObjectsFromArray之前的内容按需求是不应该释放的,那样的话内存增加是正常的,因为B一定会越来越大的,那样的话你就要进行数据缓存处理了,不能把全部数据放在内存中。
浙公网安备 33010602011771号