假设我在方法的return语句之前初始化了一个对象......
MyObj* myObj = [[MyObj alloc] initWithOpt1:opt1 withOpt2:opt2];
return myObj;
返回语句后是否可以release
?这样做之前就打败了开始它的目的,对吧?否则,处理这个问题的最佳方法是什么?
答案 0 :(得分:4)
创建Autorelease正是为了解决这个问题。
MyObj* myObj = [[MyObj alloc] initWithOpt1:opt1 withOpt2:opt2];
return [myObj autorelease];
答案 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];
不是唯一的方式。