OC将对象赋给对象,及对象用对象初始化的内存地址变化

来源:互联网 发布:直播nba的网络电视 编辑:程序博客网 时间:2024/05/22 17:02

 NSMutableArray *first = [[NSMutableArrayalloc]initWithObjects:@"123",@"234",nil];

 NSLog(@"%@",first);

 NSMutableArray *second =[[NSMutableArrayalloc]init];

second =first;

///////////此时  数组first和second指向的是同一块内存地址,改变second 的值就会相应的改变fist的值

 NSMutableArray *first = [[NSMutableArray alloc]initWithObjects:@"123",@"234"nil];

 NSLog(@"%@",first);

 NSMutableArray *second =first;

///////////同样的。此时数组first和second指向的仍是同一块内存地址,改变second 的值就会相应的改变fist的值

 NSMutableArray *first = [[NSMutableArrayalloc]initWithObjects:@"123",@"234",nil];

    NSLog(@"%@",first);

    NSMutableArray *second =[[NSMutableArrayalloc]initWithArray:first];

/////将对象初始化给另一个对象。他们所指向的地址不是同一块地址,改变second的值不会改变first的值


此外,因为此种类型是Mutable类型的,是可变的数组,在改变的过程中都是在改变他们地址中的内容。如果是不可变类型的,改变second不会改变first。因为在不可变类型中,给它从新赋值是将一片新的地址空间赋给它。





原创粉丝点击