修改NSMutableArray中的元素時的註意事項
阿新 • • 發佈:2017-07-12
bject spa nbsp 保存 nsa move test clas ati
最近做項目遇到從文件加載數組,並對數組中的元素進行操作的問題,特意寫了個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中的元素時的註意事項