0

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

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

    return repr;
    [parser release];

那么在返回对象后释放对象,这是一个好习惯吗?感谢任何信息:)

4

6 回答 6

3

简单的回答:没有

您不能在语句之后执行任何操作。return

相反,你应该autorelease对象。这将在周围 AutoreleasePool 的下一次清理运行中释放它。

SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease];
return [parser objectWithString:self];
于 2012-06-01T09:10:35.620 回答
1
SBJsonParser *parser = [[[SBJsonParser alloc] init]]autorealease];//<<< auto release the object on creaion
    id repr = [parser objectWithString:self];

    return repr;
于 2012-06-01T09:05:33.860 回答
0

您的编译器将不会到达 return 语句之后的任何行(除非您使用 finally 语句。)。你明白了autorelease

于 2012-06-01T09:07:55.253 回答
0

实际上,您在 return 语句之后的代码甚至不会被执行。glogic的解决方案是要走的路。

于 2012-06-01T09:08:10.420 回答
0

你学过编程基础吗?在 return 语句之后,不执行任何操作。

请参阅: 为什么 NSLog() 在方法返回之后什么都不做?

于 2012-06-01T09:08:57.640 回答
0

方法返回到调用它时的代码

  • 完成方法中的所有语句

  • 到达返回语句

  • 或抛出异常。

于 2012-06-01T09:28:10.693 回答