newValue
и serialNumber
являются просто указателями на объекты Objective-C. Когда вы отправляете сообщения типа release
или retain
, они отправляются фактическим объектам, на которые указывают указатели.
[serialNumber release]
отправляет метод release
объекту, на который указывает serialNumber
. Затем serialNumber = newValue
присваивает то же значение, что и указатель newValue
, serialNumber
. В этот момент значение указателя newValue
является изменяемой строкой (либо значением, равным newSerialNumber
, либо его копией), которое было сохранено, так как оно было либо скопировано, либо сохранено, так что все выглядит красиво.