返回后释放物体,这是好习惯吗?

时间:2012-06-01 09:04:33

标签: objective-c ios

我只是想知道我们是否可以这样做:

 SBJsonParser *parser = [[SBJsonParser alloc] init];
    id repr = [parser objectWithString:self];

    return repr;
    [parser release];

因此在返回后释放物体,这是一个好习惯吗? thanx任何信息:)

6 个答案:

答案 0 :(得分:3)

简单回答:否

return声明后,您无法执行任何

相反,您应该autorelease该对象。这将在周围的AutoreleasePool的下一次清理运行中解除分配。

SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease];
return [parser objectWithString:self];

答案 1 :(得分:1)

SBJsonParser *parser = [[[SBJsonParser alloc] init]]autorealease];//<<< auto release the object on creaion
    id repr = [parser objectWithString:self];

    return repr;

答案 2 :(得分:0)

您的编译器不会在return语句之后到达任何行(除非您使用finally语句。)。你需要autorelease

答案 3 :(得分:0)

实际上你的return语句之后的代码甚至都不会被执行。 glogic的解决方案是可行的方法。

答案 4 :(得分:0)

您是否学过编程基础知识?在返回语句之后,没有执行任何操作。

请参阅: Why does NSLog() not do anything if it's after a method's return?

答案 5 :(得分:0)

  
    

方法返回到

时调用它的代码   
     
      
  • 完成方法

  • 中的所有语句   
  • 达到退货声明

  •   
  • 或抛出异常。

  •