2016-01-29 3 views
-2

Я не могу понять, в чем разница между глубокой копией и мелкой копией. Пожалуйста, дайте мне понять на простом примере. БлагодаряРазница между глубокой копией и мелкой копией

+5

Пожалуйста, обратитесь это http://stackoverflow.com/questions/184710/what-is-the-difference-between-a-deep-copy- и-неглубокая копия –

+0

Неглубокая копия также известна как копия адреса. В этом процессе вы копируете только не фактические данные, а в глубокой копии вы копируете данные. –

ответ

4

Так пример у нас есть класс

@interface myClass : NSObject 

@property (strong, nonatomic) NSObject *reference; 

@end 

Давайте рассмотрим сначала в мелкой копии (стандарт, используемый в IOS)

myClass *instance = [myClass new]; 
myClass *copy = [instance copy]; 

«копию» переменная будет скопирована эталонным «ссылки», но оба ссылки из обеих переменных («copy» и «instance») будут указывать на один (тот же) объект памяти - что означает, что изменение «ссылки» в одном экземпляре приведет к изменению в другом (то же самое для обоих), но если мы перераспределит (copy.reference = [NSObject new]), он будет перераспределить только для переменной «copy», а для «instance» она будет предыдущей.

Таким образом, все вместе - копирование только ссылки, но не память они указывают на (это будет одинаковым для обеих ссылок)

Deep копия ведет себя по-другому - если вы копируете объекты, которые он будет копировать ссылки и каждая скопированная ссылка будет указывать на собственный экземпляр объекта памяти. Это означает, что изменение одного объекта не приведет к изменению другого, поскольку оно копируется со ссылками (а не как предыдущее) и кратко выделяется отдельно в памяти.

Итак, все вместе - копирующие объекты приведут к копированию ссылок и объектов, на которые они указывают. Вот почему это глубокая копия - она ​​копирует все, а не только ссылки.

Выше я добавил изображения мелкой и глубокой копии для лучшего понимания. Сначала мелкий, второй - глубокий.

Малая копия Shallow copy

Deep копия Deep copy

+0

Спасибо за ваше объяснение. – Raja

Смежные вопросы