我只是想知道我们是否可以这样做:
SBJsonParser *parser = [[SBJsonParser alloc] init];
id repr = [parser objectWithString:self];
return repr;
[parser release];
因此在返回后释放物体,这是一个好习惯吗? thanx任何信息:)
答案 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)
方法返回到
时调用它的代码
- 中的所有语句
完成方法
达到退货声明
或抛出异常。