数组

今天在操作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一定会越来越大的,那样的话你就要进行数据缓存处理了,不能把全部数据放在内存中。 

posted on 2016-03-26 12:19  嘎嘣脆0  阅读(100)  评论(0)    收藏  举报

导航