__NSFastEnumerationMutationHandler崩溃

在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];
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。