說我有一個方法的返回語句之前初始化的對象...返回後釋放對象?
MyObj* myObj = [[MyObj alloc] initWithOpt1:opt1 withOpt2:opt2];
return myObj;
是否有可能release
它return語句後?這樣做之前打敗了初始化它的目的,對吧?否則,處理這個問題的最好方法是什麼?
說我有一個方法的返回語句之前初始化的對象...返回後釋放對象?
MyObj* myObj = [[MyObj alloc] initWithOpt1:opt1 withOpt2:opt2];
return myObj;
是否有可能release
它return語句後?這樣做之前打敗了初始化它的目的,對吧?否則,處理這個問題的最好方法是什麼?
創建自動釋放正是爲了解決這個問題。
MyObj* myObj = [[MyObj alloc] initWithOpt1:opt1 withOpt2:opt2];
return [myObj autorelease];
只是做
return [myObj autorelease];
這就是它!
雖然
return [myObj autorelease];
工作是更好的編碼教育簡單地
return myObj;
,然後當你創建對象,上面有一個自動做到這一點。
MyObj *my_obj = [[[MyObj alloc] initWithOpt1:opt1 withOpt2:op2] autorelease];
和原因是因爲autorelease說這個函數結束時我想釋放這個對象。所以使用
return [myObj autorelease];
不是唯一的方法。