我是目标 c 的新手,并试图了解如何/何时调用 autorelease。我了解以下简单用例:
- (void) foo {
Bar *b = [[[Bar alloc] init] autorelease];
[self doSomething:b];
}
那么下一个案例呢——这是一个错误,因为该对象将在离开 makeBar 的范围后立即释放?
-(Bar*) makeBar
{
return [[[Bar alloc] init] autorelease];
}
如果调用者进行了保留怎么办?
Bar *b = [[self makeBar] retain];
谢谢,-埃里克