-(NSString *)returnString
{
NSString *str=[NSString new];
return str;
}
-(void)getString {
NSString *string=[self returnString];
[string release];
}
这是发布NSString
的适当/正确方法吗?
此外,如果自动释放对象的生命周期在runloop结束时结束。那么我们可以手动排空系统生成的自动释放池吗?这样我就可以释放所有自动释放的对象,并获得内存警告。
答案 0 :(得分:6)
您应该创建一个具有自动释放功能的对象。 试试这个
-(NSString *)returnString
{
NSString *str= [[NSString new] autorelease];
return str;
}
答案 1 :(得分:0)
你绝对可以手动排空泳池。每次排空池时,都会间接向此池中的所有已分配对象发送release
。
尽管请记住,您应该只在某些非常具体的情况下使用Autorelease
。例如,您不应该一直使用它以避免担心手动释放对象。
就个人而言,我并不完全信任Autorelease,但当您将对象的所有权归给“别人”时,这是您唯一的选择。对于您仍然拥有它并可以手动释放的任何其他人,请选择这样做。