Как сказал willcodejavaforfood, соглашение заключается в том, что любой вновь выделенный объект, возвращаемый методом, должен быть autorelease
'd перед возвращением.Это сообщает среде выполнения Objective C, что если никто не вступит во владение им с retain
до (в большинстве случаев) текущей итерации цикла событий приложения, он должен быть освобожден.
Если он используется только локальнов вызывающей функции или возврате в стек, это прекрасно работает и рано или поздно освобождается.Если в конечном итоге кто-то захочет сохранить его, он должен retain
это, и поэтому он будет знать, что ему придется release
это позже.
(На самом деле, большинство не * 1009конструкторы утилит для базовых классов ObjC, таких как строки и т. д., делают это или, по крайней мере, что-то функционально эквивалентное.)