NSMutableArray 的copy问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NSMutableArray 的copy问题相关的知识,希望对你有一定的参考价值。

最近遇到一个坑,copy来的数组有问题,所以就有了下面的实验;

最后得出:可变数组的copy 后 是两个数组,两块地址,但copy出来的数组是不可变数组,

不能做删除操作,如果要操作copy后的数组要用可变数组重新接受,

@property (nonatomic, copy) NSMutableArray *testArray;
@property (nonatomic, retain) NSMutableArray *modelArray;
@end

@implementation ViewController
- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
 
}
- (void)dealloc
{
    
}
- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSString *string1 = @"123";
    NSString *string2 = @"23";
    NSString *string3 = @"3";
    self.modelArray = [NSMutableArray array];
    [self.modelArray addObject:string1];
    [self.modelArray addObject:string2];

    [self.modelArray addObject:string3];

   
    //self.testArray = [NSMutableArray array];
    self.testArray = _modelArray;
    NSLog(@"%@",_testArray);
    NSString *text = @"text";
    [_modelArray removeObjectAtIndex:0];
    NSLog(@"%@",_modelArray);
    NSLog(@"%@",_testArray);
    [self.modelArray addObject:text];
   
    NSMutableArray *array = [NSMutableArray arrayWithArray:_testArray];
    [array removeObjectAtIndex:0];
     NSLog(@"%@",_modelArray);
    
    
}

以上是关于NSMutableArray 的copy问题的主要内容,如果未能解决你的问题,请参考以下文章

这个写法会出什么问题: @property (copy) NSMutableArray *array;

通过 UITableView 从 NSMutableArray 中删除项目

iOS内存管理--NSArray与NSMutableArray用copy修饰还是strong

iOS内存管理--NSArray与NSMutableArray用copy修饰还是strong

NSMutableArray 如何正确添加对象并释放

NSMutableArray 从 plist 返回 Null