1. 程式人生 > >修改NSMutableArray中的元素時的註意事項

修改NSMutableArray中的元素時的註意事項

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中的元素時的註意事項