__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];
        }
    }
}
上一篇下一篇

猜你喜欢

热点阅读