复制时保留计数

Retain count while copying

我对内存管理很陌生。我知道我的问题已经在 Whosebug 上讨论过了。但我想知道答案才能完全理解它。我的问题是:

NSMutableArray *firstArray = [[NSMutableArray alloc]init];
NSMutableArray *secondArray = [[NSMutableArray alloc] init];
secondArray = [firstArray copy];

复制后firstArray和secondArray的保留计数是多少?

每人1个。 firstArray 持有指向 firstArray 的指针。当您调用 secondArray = [firstArray copy]; 时,firstArray 的内容被复制到一个新的内存位置,并且 secondArray 将指向该位置。这意味着 firstArraysecondArray 将指向不同的内存位置(并且是不同的对象),尽管它们具有相同的数据。因此,它们各自的保留计数为 1。