В target-C объекты всегда доступны как указатель.Если для объекта задано значение nil, просто измените значение указателя, а не значение объекта.
В вашем методе у вас есть доступ только к значению объекта, а не к указателю, указывающему на него!
Как@ Дэвид Данхэм говорит, что вы можете иметь более одного указателя на объект, так что откуда знает компилятор?
И более того, чтобы упростить задачу, представьте следующий код:
int a;
int* aPtr = &a;
Если вы измените значение a
, вы можете получить доступ к измененному значению через *aPtr
верно?Но вы можете изменять значение a
так долго, как захотите, значение aPtr
не изменится, так как это не та же переменная!
Таким образом, даже если у вас есть только один указатель на ваш объект, если вы измените значение объекта, указатель все равно будет указывать на то же значение адреса!