0

表示する情報(画像、ボタン、ジェスチャー、テキストなど)を保持するView Controllerを作成し、それらをスクロールに追加しています。

productsVCs = [[NSMutableArray alloc] init];

for (int i = 1; i <= [self.products count]; i++) {
    productsSingle *single = [[productosSingle alloc] init];
    single.view.frame = CGRectMake(x, y, 200, 148);
    single.delegate = self;
    [single setInfo:[self.products objectAtIndex:i-1]];
    [scroll addSubview:single.view];
    [productsVCs addObject:single];
}

ご覧のとおり、割り当てたビュー コントローラーで 3 つの重要なことを行っています。ARC にこれらのオブジェクトを解放させるために必要だと思われることを書きました。

1) デリゲートを設定します。-デリゲートを nil に設定する必要がありますか?

2) ビューをサブビューとして追加します。-スーパービューから削除しますか?

3) コントローラーをアレイに追加します。-アレイから削除しますか?

私の質問は、これらのビュー コントローラーの割り当てが解除されるのはいつですか? ARCを使用。助けてくれてありがとう。

4

2 に答える 2

0

productsSingleViewController (スクロールビューを持つ) の割り当てが解除されると、オブジェクトの割り当てが解除されます。

ARC はコンパイル時に機能するため、ARC はreleaseオブジェクトのメソッドへの呼び出しを挿入します。プロジェクトをコンパイルするとき、ARC はreleaseメソッドへの呼び出しを次のように挿入します。

[single setInfo:[self.products objectAtIndex:i-1]];
[scroll addSubview:single.view];
[single release]; //ARC inserts this line
于 2012-09-03T19:19:36.050 に答える
0

ARC を使用している場合、オブジェクトの解放について心配する必要はありません。それでも、コントローラーで強く保持されたインスタンス変数を設定して、viewDidUnloadメソッドで解放することができます。

これで、View Controller への参照を保持しているものの割り当てが解除されると、View Controller の割り当てが解除されます。この場合、アプリケーション自体またはコントローラーを作成した別のコントローラーになります。それへの参照を保持していない場合は、コード ブロックを終了するとすぐに割り当てが解除されます。

ARCの使用に関する簡単なガイドは次のとおりです

于 2012-09-03T19:20:15.793 に答える