0

ストーリーボードでView Controllerを開くためのこのコードがあります

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    secondViewController = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[self.view addSubview:secondViewController.view];

正常に動作しますが、削除すると secondViewController を解放したい

[secondViewController.view removeFromSuperview];

そしてそれを解放するために??? secondViewController を呼び出したときに割り当てがありません...

4

3 に答える 3

2

-instantiateViewControllerWithIdentifier:オブジェクトを返しautoreleasedます。解放する必要はありません。あなたがそれからそれを取り除くとviewsuperviewそれは解放されます。この質問を使用している場合ARCは、まったく尋ねるべきではありません...

于 2013-01-04T11:15:06.673 に答える
0

まず、視覚的な UIView インスタンスと UIViewController インスタンスを区別することが重要です。この呼び出しは、 UIViewinstantiateViewControllerWithIdentifierプロパティを持つビュー コントローラー オブジェクトを返します (UIViewController は自動解放されたインスタンスであるため、明示的に解放する必要はありません) 。それは確かにいくつかのビューのサブビューであるためです。スーパービューからそのビューを削除し、ARC を使用している場合は、ビューの UIViewController への強い参照を保持していない限り、ビューを解放する必要があります。その場合、UIViewController プロパティに nil 値を割り当てるだけで処理されます。ARC を使用しない場合は、「release」を呼び出す必要があります。(景色ではありません)

于 2013-01-04T11:16:02.493 に答える
0

ARCを使用していると思います。ただ書いてsecondViewController = nil;ください。自動的に解放されるはずです。

于 2013-01-04T11:13:10.700 に答える