可能重複會發生什麼:
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