2013-06-22 2 views
0

С поддержкой ARC при добавлении объекта (например, объекта X) в NSMutableArray, если этот объект X изменяется непосредственно в другом месте кода, следует ли также обновлять «копию» внутри NSMutableArray?Поведение NSMutableArray с ARC

Является ли NSMutableArray ссылкой на указатель исходного объекта?

+0

Что "копия"? Когда вы добавляете объект в NSArray или NSDictionary, вы добавляете «оригинал». Единственное, что скопировано, это указатель. Это всегда так, ARC или ARC. –

ответ

3

Если это copy, то нет. Если вы добавили его в качестве ссылки, тогда да. Это просто указатель на объект, поэтому любые изменения вашего объекта будут применяться к ссылке на объект в массиве.

Не путайте NSMutable часть массива. То же самое происходит с обычным NSArray: если вы измените объект, то массив будет иметь ссылку на измененный объект. Измененная часть применяется только к массиву, а не к объектам в массиве.

+0

Спасибо, поэтому однажды я сделал это: [myArray addObject: X]; Я добавил как указатель, и он будет обновляться. Еще раз спасибо – Woodstock

+2

Да, это всего лишь указатель на объект. – Abizern

3

Не тогда, когда вы добавляете, как это:

[marray addObject:[object2 copy]]; 

Но когда вы добавляете его, как это (в качестве ссылки), он будет обновляться:

[marray addObject:object2]; 
+0

Приветствия брата! – Woodstock