在目标c中释放物体的正确方法

时间:2011-05-31 04:06:48

标签: iphone ipad memory memory-management memory-leaks

-(NSString *)returnString
{
      NSString *str=[NSString new];
       return str;
}

-(void)getString {
     NSString *string=[self returnString];
     [string release];
}

这是发布NSString的适当/正确方法吗?

此外,如果自动释放对象的生命周期在runloop结束时结束。那么我们可以手动排空系统生成的自动释放池吗?这样我就可以释放所有自动释放的对象,并获得内存警告。

2 个答案:

答案 0 :(得分:6)

您应该创建一个具有自动释放功能的对象。 试试这个

-(NSString *)returnString
   {
     NSString *str= [[NSString new] autorelease];
     return str;
   }

答案 1 :(得分:0)

你绝对可以手动排空泳池。每次排空池时,都会间接向此池中的所有已分配对象发送release

尽管请记住,您应该只在某些非常具体的情况下使用Autorelease。例如,您不应该一直使用它以避免担心手动释放对象。

就个人而言,我并不完全信任Autorelease,但当您将对象的所有权归给“别人”时,这是您唯一的选择。对于您仍然拥有它并可以手动释放的任何其他人,请选择这样做。