iOS开发一些零碎的小知识(三)

在IOS开发中,我们经常用的NSArray或者NSMutableArray ,但是当使用不当的时候,会有下面的错误提示。 Collection <__NSArrayM: 0xxxxxxx> was mutated while being enumerated.

遇到这类错误的时候,是同时对同一个数组进行了操作

错误例子:

NSMutableArray * arrayTemp = xxx;   

for (NSDictionary * dic in arrayTemp) {        

    if (condition){            
        [arrayTemp removeObject:dic];
    }       
}

数组在遍历的同时,也对它进行移除操作,这样做程序在运行的时候会崩溃

所以应改为

NSMutableArray * arrayTemp = xxx; 

NSArray * array = [NSArray arrayWithArray: arrayTemp];  

for (NSDictionary * dic in array) {        

    if (condition){            
        [arrayTemp removeObject:dic];
    }       
}

Comments