__NSFastEnumerationMutationHandl
2019-01-11 本文已影响8人
fordeson
在iOS开发中,有一个比较容易出现的崩溃。就是__NSFastEnumerationMutationHandler,先上代码
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *datas = [NSMutableArray arrayWithObjects:@"a", @"b", @"c", nil];
for (NSString *data in datas) {
if ([data isEqualToString:@"a"]) {
[datas removeObject:data];
}
}
}
在运行这段代码过后会出现以上的崩溃,出现这个崩溃的原因是因为在快速枚举中修改了数组的内容。那么怎么处理才可以完美运行呢?其实很简单。只要将forin改为普通的for循环就可以了。
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray *datas = [NSMutableArray arrayWithObjects:@"a", @"b", @"c", nil];
for (int i = 0; i < datas.count; i++) {
NSString *data = [datas objectAtIndex:i];
if ([data isEqualToString:@"a"]) {
[datas removeObject:data];
}
}
}