2011-09-27 197 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]; 

不是唯一的方法。

相關問題