NSMutableArray 刪除可變數組元素

平時使用 NSMutableArray 中常常用到遍歷刪除數組元素的問題。
通常第一個想法是使用一下 forin 就解決了,可是老司機都會知道使用 forin 作刪除操做的時候會 crash。
報錯的緣由是:數組

當數組在枚舉的時候被修改了,由於數組規定在forin遍歷的時候不能修改數組元素。
可是有一種特殊狀況,就是在刪除數組最後一個元素的時候能夠使用forin,由於到最後一個元素的時候forin枚舉已經結束了,這時候刪除元素不會影響到forin工做。code

NSMutableArray *nameArray = @[@"1", @"2", @"3", @"4"];

 使用倒序forin 刪除元素blog

//建立逆序遍歷
NSEnumerator *enume = [nameArray reverseObjectEnumerator]; 
for (NSString *name in enumerator) {  
    if ([name isEqualToString:@"2"]) {  
        [array removeObject:name];  
    }  
}

使用 for 循環進行遍歷刪除
遍歷整個數組,找到對應的元素,而後執行刪除操做 rem

for (int i = 0; i < count; ++i) {
	NSString *name = nameArray[i];
	if ([name isEqualToString:@"2"]) {
		nameArray removeObject:name];
	}
}

 還有一種方式是定義一個副本數組,對這個副本數組進行遍歷,在原數組中進行刪除操做it

NSMutableArray *copyNameArray = [NSMutableArray arrayWithArray:nameArray];
for (NSString *name in copyNameArray) {
	if ([name isEqualToString:@"2"]) {
		[nameArray removeObject:name];
	}
}
相關文章
相關標籤/搜索