NSArray добавляет указатель на объект . Чтобы отслеживать изменения в переменной, массив должен добавить указатель на самой переменной (помните, вы просто устанавливаете переменную на ноль, а не на объект). Может быть много переменных, указывающих на один и тот же объект, и переназначение их не изменит других.
Помните: указатели не волшебство. Это просто обычные переменные, значение которых является адресом памяти - в данном случае адресом памяти объекта. Два указателя на один и тот же объект не «связаны» более чем с двумя int
s со значением 5
. Изменение указателя не влияет на объект; чтобы воздействовать на объект, вы должны либо отправить ему сообщение, которое вызывает его изменение (например, [object setValue:6]
), либо разыменовать указатель для прямого доступа к членам объекта (например, object->value = 6
).
PS: не обращайтесь напрямую к членам объекта. Это плохо и хрупко и очень подвержено ошибкам. Я только что упомянул это здесь, чтобы объяснить, как работают указатели.