【发布时间】:2012-09-08 13:13:09
【问题描述】:
可能重复:
Is AutoRelease redundant when using ARC in Objective-C?
我是 Objective C 的新手,并且了解它的内存管理。我真的很难理解强变量的行为。下面是sn-p,它真的让我很困惑。我有以下方法,我正在使用 ARC。
-(void) watchStrongVariable {
MyClass * myobj = [self getMyClassObject];
// ...
}
-(MyClass *) getMyclassObject{
return [[[MyClass alloc] init] autorelease];
}
在第 #2 行,我将 MyClass 对象分配给局部变量 myobj 。我读到所有局部变量默认情况下都是强的,强类似于保留。因此,在上述情况下,我的假设是 myobj 被保留并在方法 watchStrongVariable 中拥有,但问题是 myobj 被保留,如果我们不通过调用 [myobj release] 明确释放 myobj 。我看到了很多遵循相同模式但没有释放消息发送到局部变量的程序。有人可以解释一下为什么在上述情况下不需要释放myobj。
【问题讨论】:
标签: objective-c automatic-ref-counting autorelease