self
- аргумент функции для методов экземпляра. Назначение self вполне разумно, точно так же, как назначение значений другим аргументам функции совершенно разумно. Поскольку область действия self
является текущей функцией, ваш код пропускает один объект и освобождает другой таким образом, что, скорее всего, произойдет сбой.
Единственное время, которое имеет смысл присвоить self
, - это метод init
. Хотя он почти никогда не используется, методам init
разрешено освобождать себя и выделять новый объект для возврата или просто вернуть nil. Единственная причина, по которой это работает, заключается в том, что возвращаемое значение равно self, и вызывающие init
ожидают использовать возвращаемое значение.
Как указал gf, правильный подход - это функция загрузки, которая назначает новые значения членам вашего экземпляра, а не пытается заменить экземпляр.