你好,我不完全理解obj-C中的autorelease函數調用。Objective C autorelease
@interface A{
id obj;
}
@implementation A
-(void)myMethod;
{
obj = [BaseObj newObj]; //where newObj is a method like :[[[BaseObj alloc]init]autorelease];
}
-(void)anotherMehtod;
{
[obj someMeth]; //this sometimes gives me EXC_BAD_ACCESS
}
@end
所以要解決這個問題,我把一個保留。現在,如果我保留它,我需要手動釋放這個對象嗎?
一個側面說明:在可可的規則是,如果一個方法名以`new`,`copy`,`retain`,或`alloc`啓動,調用者必須發送`release'或`autorelease`來平衡它。所以名爲`newObj`的方法不應該自動釋放它自己的結果。 – 2011-02-05 15:04:20