首页 > 代码库 > 修改NSMutableArray中的元素时的注意事项
修改NSMutableArray中的元素时的注意事项
最近做项目遇到从文件加载数组,并对数组中的元素进行操作的问题,特意写了个Demo,记录下要注意的东西:
代码如下:
NSArray *array = @[@"1", @"2", @"3"]; NSMutableArray *marray = [[NSMutableArray alloc] initWithArray:array]; NSString *temp = [marray objectAtIndex:1]; temp = @"22"; NSLog(@"%@", marray); [marray removeObjectAtIndex:1]; [marray insertObject:temp atIndex:1]; NSLog(@"%@", marray);
Run起来看看:
2014-01-22 04:25:52.841 Arraytest[10932:70b] ( 1, 2, 3 ) 2014-01-22 04:25:52.842 Arraytest[10932:70b] ( 1, 22, 3 )
问题主要在于:
首先从NSMutableArray中的元素中取出索引为i的元素并赋值给temp。
如果直接对temp操作,修改其字符串值,因为令temp = @"22"是生成了一个NSConstantString类对象,temp指针的指向发生了变化,不再指向原来数组中的对象,因此不会对原来的NSMutableArray索引为i的元素造成影响。
如果要将影响保存到数组中,那么要先remove索引为i的元素再insert temp元素进数组中。
修改NSMutableArray中的元素时的注意事项
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。