Ваш метод должен следовать стандартным процедурам управления памятью. Если ваш метод возвращает объект, но не содержит слов «alloc», «new», «copy», «create» или «retain», объект должен быть автоматически освобожден.
Если оно содержит одно из этих слов, то оно должно быть возвращено с сохранением +1.
Например:
//return an autoreleased object, since there's no copy, create, retain, alloc, or new
- (id) doSomethingWithFoo:(id)foo {
id fooCopy = [foo copy];
[fooCopy doTheNeedful];
return [fooCopy autorelease];
}
//return a +1 object, since there's a copy in the name
- (id) copySomethingWithFoo:(id)foo {
id fooCopy = [foo copy];
[fooCopy doTheNeedful];
return fooCopy;
}