返回后释放对象?

时间:2011-09-27 20:39:07

标签: iphone objective-c

假设我在方法的return语句之前初始化了一个对象......

MyObj* myObj = [[MyObj alloc] initWithOpt1:opt1 withOpt2:opt2];
return myObj;

返回语句后是否可以release?这样做之前就打败了开始它的目的,对吧?否则,处理这个问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

创建Autorelease正是为了解决这个问题。

MyObj* myObj = [[MyObj alloc] initWithOpt1:opt1 withOpt2:opt2];
return [myObj autorelease];

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html

答案 1 :(得分:3)

只做

return [myObj autorelease];

就是这样!

答案 2 :(得分:0)

虽然

return [myObj autorelease];

工作是更好的编码教育简单

return myObj;

然后当你创建对象时,在它上面自动释放它。

MyObj *my_obj = [[[MyObj alloc] initWithOpt1:opt1 withOpt2:op2] autorelease];

,原因是因为autorelease说当这个函数结束时我想释放这个对象。所以使用

return [myObj autorelease]; 

不是唯一的方式。