Локальные переменные имеют автоматическая длительность , что означает, что они исчезают при выходе из функции.Когда локальные переменные связаны непосредственно со значениями, значения также должны перестать существовать при выходе из функции.PHP использует ссылки (хотя, с технической точки зрения, "псевдоним" лучше соответствует тому, что использует PHP) для значений, которые должны существовать после вызова функции, которая их создает, чтобы они могли иметь динамическую продолжительность.Он также использует сборщик мусора (реализация которого изменилась в 5.3) для управления временем жизни этих значений.Обычно нет необходимости использовать ссылки явно, поскольку (true) ссылки автоматически используются для типов классов, и ссылки не являются необходимыми для типов значений .
Там, где в PHP есть ссылки, в Objective-C есть указатели, которые берут свое начало в корнях языка C.Указатели позволяют динамически размещать объекты, чтобы они оставались вне цепочки вызовов функций (т. Е. Стека).У вас может быть сборка мусора в Какао, но это более новая функция.Предыдущий метод, основанный на подсчете ссылок , по-прежнему очень жизнеспособен (и является единственным вариантом в iOS и некоторых реализациях Objective-C не от Apple).
Без указателей (или ссылок)), объекты будут полностью жить в стеке и должны будут копироваться при входе или выходе из функции.Состояние хранилища объектов;Копирование объекта означает, что состояние оригинала не будет обновлено, когда копия выполнит какое-либо действие и изменит свое состояние.Иногда это не будет проблемой, тогда как в других случаях это будет роковой недостаток.Представьте, что произойдет с потоками ввода или вывода, если функции ввода / вывода могут работать только с копиями.