Форум программистов, компьютерный форум, киберфорум
Наши страницы
Objective-C
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
kievkao
42 / 42 / 2
Регистрация: 22.11.2012
Сообщений: 225
#1

Копирование объектов

09.04.2014, 23:11. Просмотров 1089. Ответов 1
Метки нет (Все метки)

Добрый день!

Обнаружил, что я не понимаю каких-то очень базовых вещей. Был бы очень рад, если бы мне подсказали
Столкнулся с такой ситуацией, и не могу сам себе объяснить, почему происходит именно так:

Допустим, у меня есть два объекта моего класса. Я хочу заменить значение полей одного из них - значениями другого.
Когда я выполняю следующую тупую операцию, то ожидаемого эффекта нет:
Objective-C
1
object1 = object2;
А если вот так, то все происходит корректно:
Objective-C
1
2
3
object2.field1 = object1.field1;
object2.field2 = object1.field2;
...
Не могу понять, почему происходит именно так?
В первом случае, как я понимаю, мы говорим, что указатель <object1> будет теперь указывать на ту же область памяти, куда и <object2>.
Т.е. в этой области памяти находятся как раз все данные объекта <object2>, и, установив указатель на эту область, мы, вроде как, должны иметь возможность обращаться ко всем хранящимся там значениям..

Буду очень рад подсказкам, в чем я ошибаюсь. А то аж страшно ловить себя на мысли, что не понимаю основ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.04.2014, 23:11
Ответы с готовыми решениями:

Глубокое копирование
Суть проста. Нужно скопировать массив ,включая вложенные массивы и объекты....

Пересечение объектов
Как узнать пересекаются ли 2 объекта типа SKSpriteNode?

Последовательность создания объектов
Подскажите пожалуйста. У меня есть класс отвечающий за загрузку данных по url и...

Проверка на удаление объектов
Привет всем. Пишу в Obj C совсем недавно. Интересно проверить не утекает ли...

Хранение объектов в массиве
Добрый вечер! Стоит задача: создать матрицу с задаваемыми размерами строки и...

1
zulkis
684 / 611 / 43
Регистрация: 13.01.2011
Сообщений: 1,724
10.04.2014, 07:43 #2
Цитата Сообщение от kievkao Посмотреть сообщение
заменить значение полей одного из них - значениями другого
Вот так многие значения полей поместить в одно поле другого объекта? Занятно
Цитата Сообщение от kievkao Посмотреть сообщение
object1 = object2;
А "1" и "2" не нужно местами поменять?
Ибо вы сами сказали что так все хорошо:
Цитата Сообщение от kievkao Посмотреть сообщение
object2.field1 = object1.field1;
И если вы заменяете "поля" - заменяйте их. Ибо если вы присвоите указатели - объект-то не изменится...
Цитата Сообщение от kievkao Посмотреть сообщение
В первом случае, как я понимаю, мы говорим, что указатель <object1> будет теперь указывать на ту же область памяти, куда и <object2>.
На "начало" этой области.
Вы меняете указатели, и в первом случае object1 будет указывать туда же, куда и object2.
Цитата Сообщение от kievkao Посмотреть сообщение
Т.е. в этой области памяти находятся как раз все данные объекта <object2>
Говоря по-простому, да.
Ну так вы и сможете обращаться. Все, что доступно для object2 будет тем же самым и для object1 после такой операции:
Цитата Сообщение от kievkao Посмотреть сообщение
object1 = object2;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.04.2014, 07:43

Правильная имплементация объектов
Здравствуйте. Подскажите пожалуйста, сейчас слушаю лекции по программирования...

Хранение WEAK объектов в массиве
Иногда возникает ситуация хранить в массиве просто указатели на объекты, таким...

SpriteKIT (Создаем массив объектов)
Господа, добрый день. нужна помощь. Делаю недотетрис. Использую SpriteKIT...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru