Я прочитал руководство по управлению памятью для языка Objective-C, но это сомнение у меня остается, даже после прочтения этой главы много раз.
Допустим, я хочу вернуть объект, который я только что создал, в методе объекта, подобного этому:
NSString* ret = [[NSString alloc] initWithString:@"My string"];
return ret;
Я могу сделать это, но это не правильно в соответствии с политикой собственности. В руководстве говорится, что правильным решением будет:
NSString* ret = [[NSString alloc] initWithString:@"My string"];
return [ret autorelease];
потому что, поскольку я авто-релиз, я больше не владелец.
Мой вопрос: когда NSString будет действительно освобожден и освобожден? Когда будет выпущен последний инициализированный пул? Это означает, что, если я не создаю пул, этот объект будет освобожден при закрытии приложения (пул, который xcode создает по умолчанию, освобождается в конце). Это правильно?
То же самое относится к объектам, которые не выделены мной, например:
NSString* ret = [NSString stringWithString:@"My string"];
? Если я не создаю пул, чтобы выпустить его в другом месте, он освобождается в конце приложения при освобождении пула, созданного с помощью xcode?
Спасибо за любые разъяснения.