我只是想知道我们是否可以这样做:
SBJsonParser *parser = [[SBJsonParser alloc] init];
id repr = [parser objectWithString:self];
return repr;
[parser release];
那么在返回对象后释放对象,这是一个好习惯吗?感谢任何信息:)
我只是想知道我们是否可以这样做:
SBJsonParser *parser = [[SBJsonParser alloc] init];
id repr = [parser objectWithString:self];
return repr;
[parser release];
那么在返回对象后释放对象,这是一个好习惯吗?感谢任何信息:)
简单的回答:没有
您不能在语句之后执行任何操作。return
相反,你应该autorelease
对象。这将在周围 AutoreleasePool 的下一次清理运行中释放它。
SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease];
return [parser objectWithString:self];
SBJsonParser *parser = [[[SBJsonParser alloc] init]]autorealease];//<<< auto release the object on creaion
id repr = [parser objectWithString:self];
return repr;
您的编译器将不会到达 return 语句之后的任何行(除非您使用 finally 语句。)。你明白了autorelease
。
实际上,您在 return 语句之后的代码甚至不会被执行。glogic的解决方案是要走的路。
你学过编程基础吗?在 return 语句之后,不执行任何操作。
方法返回到调用它时的代码
完成方法中的所有语句
到达返回语句
或抛出异常。