说我有一个方法的返回语句之前初始化的对象...返回后释放对象?
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];
不是唯一的方法。