私は Objective C を初めて使用し、そのメモリ管理を理解しています。強い変数の振る舞いを理解するのに本当に行き詰まりました。以下は、本当に私を混乱させるスニペットです。次の方法があり、ARCを使用しています。
-(void) watchStrongVariable {
MyClass * myobj = [self getMyClassObject];
// ...
}
-(MyClass *) getMyclassObject{
return [[[MyClass alloc] init] autorelease];
}
MyClass
2 行目では、オブジェクトをローカル変数に割り当てていますmyobj
。すべてのローカル変数はデフォルトで強力であり、強力は保持に似ていることを読みました。したがって、上記の場合、私の仮定はmyobj
保持され、メソッドに所有されてwatchStrongVariable
いますが、呼び出しによって明示的にmyobj
解放しないでください。同じパターンに従う多くのプログラムを見ましたが、解放メッセージが送信されませんローカル変数。上記の場合に のリリースが必要ない理由を誰かが説明してくれますか?myobj
[myobj release]
myobj