Каждый retain
должен совпадать с release
.
Это говорит о том, что в вашей функции вам не нужно retain
* foo, если вы не откладываете его использование.
Обычно пул autorelease get получает drain
в конце цикла выполнения, поэтому у вас есть время использовать его локально в своей функции.
Но если вы retain
, вы должны release
.
И вы могли бы сделать это:
return [NSString stringWithString:@"foo];
Это удобный метод, который возвращает вам объект autorelease
.