可能重复会发生什么:
Is AutoRelease redundant when using ARC in Objective-C?时自动释放对象被分配到强变量
我新的目标C和理解它的内存管理。我真的很难理解强变量的行为。下面是一些令我困惑的片段。我有以下方法,我正在使用ARC。
-(void) watchStrongVariable {
MyClass * myobj = [self getMyClassObject];
// ...
}
-(MyClass *) getMyclassObject{
return [[[MyClass alloc] init] autorelease];
}
在线路#2中,我分配MyClass
对象的局部变量myobj
。我读到所有局部变量默认强壮,强壮与保留相似。因此,在上述情况下,我的假设是myobj
被保留,并在方法watchStrongVariable
中拥有,但是由于myobj
被保留,没有释放消息发送到本地变量。有人可以向我解释为什么在上述情况下不需要发布myobj
。
“实际上,这会产生一个编译器警告。”相反,一个错误 - 警告不是致命的,但这是一个错误。 +1虽然。 – 2012-09-15 19:40:24
感谢H2CO3,你是对的。我修改了我的答案。 – gilletty