modelTest *model1 = [[modelTest alloc]init];
modelTest *model2 = model1;
// model1 = nil;
NSLog(@"%@",model1);
NSLog(@"%@",model2);
2022-03-24 15:23:28.948232+0800 OCTEst[18514:6685444] <modelTest: 0x600003bb83f0>
2022-03-24 15:23:28.948291+0800 OCTEst[18514:6685444] <modelTest: 0x600003bb83f0>
从打印中可以看出,两个模型的地址是一样的, 都是指向同一块内存空间
如果把model1置空,那么会不会影响model2,答案是不会的
modelTest *model1 = [[modelTest alloc]init];
modelTest *model2 = model1;
model1 = nil;
NSLog(@"%@",model1);
NSLog(@"%@",model2);
2022-03-24 15:25:25.596903+0800 OCTEst[18647:6688399] (null)
2022-03-24 15:25:25.597060+0800 OCTEst[18647:6688399] <modelTest: 0x600003df8430>
为什么不会影响到model2的值呢,因为我们把model1置空,相当于是把model1的指针给断开了,不再指向那一块内存空间,但是,那块内存空间依然是存在的,而且被model2指向着
网友评论