2011-09-27 101 views
2

说我有一个方法的返回语句之前初始化的对象...返回后释放对象?

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

是否有可能release它return语句后?这样做之前打败了初始化它的目的,对吧?否则,处理这个问题的最好方法是什么?

回答

3

只是做

return [myObj autorelease]; 

这就是它!

0

虽然

return [myObj autorelease]; 

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

return myObj; 

,然后当你创建对象,上面有一个自动做到这一点。

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

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

return [myObj autorelease]; 

不是唯一的方法。