Краткий ответ.Этот код не даст утечки.
Длинный ответ:
С NSString это не всегда видимая утечка из-за интерна строк, а также потому, что вы не вызываете методы alloc / new / copy.Но да, это классическая точка утечки памяти в целом.
Есть два способа справиться с этим.
- отслеживание всех объектов, которые вы возвращаете из этого (или аналогичных) метод и освобождение их.Это чрезвычайно ошибочная возможность и очень плохая почти каждый раз.
- возвращающий автоматически выпущенный экземпляр.На самом деле, вы сделали что-то подобное здесь неявно.Это строковое назначение похоже на:
NSString *foo = [NSString stringWithString:@"bar"];
И это похоже на:
NSString *foo = [[[NSString alloc] initWithString:@"bar"] autorelease];
Итак, вы вернете объект, который имеет счет 1, ноавтоматически выпущен.Итак, когда NSAutoreleasePool будет слит, этот объект исчезнет.