我阅读了 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创建的池时释放?感谢您的任何澄清。