1

アウトレット mynewView を使用してストーリーボードに UIView があり、まったく異なるコンテンツで表示したい。そして何度もやってください。

私の UIView には多くのオブジェクトが含まれています。インターネットからロードします。しかし、私がするたびに

    NSArray *viewsToRemove = [view1 mynewView];
    for (UIView *v in viewsToRemove) {
        [v removeFromSuperview];
    }

    //Let's try to remove all possible views..

    viewsToRemove = [self.view subviews];
    for (UIView *v in viewsToRemove) {
        [v removeFromSuperview];
    }

    //here i create mynewView
    mynewView = [self createnewRandomView];
    //And finally add the View we have created.

    [self.view addSubview:mynewView];

私はメモリ消費量を監視しており、新しい UIView を追加するたびにメモリ消費量が増加していることがわかります。すべてのスーパービューを削除しても。記憶に残っていると思います。

ビューを変更する前に、可能なすべてのビューをスーパービューから削除しますが、それらはまだメモリに残ります。

Xcode は ARC を使用するように設定されているため、リリースできません。

UIView を再利用する良い方法はありますか?

ありがとう

4

2 に答える 2

0
[self.view addSubview:mynewView];

newViewがself.viewのサブビューとして追加されました。上記のコードは、self.viewのyourVewViewの削除には使用されません。新しいビューを追加する前に、次のコードを試してください。

for (UIView *view in self.view) {
   if([view isKindOfClass:[YourNewViewClassName class]])
   {
       [view removeFromSuperView];
       break;
   }
}
于 2012-09-27T01:43:35.473 に答える
-2

サブビューを削除するときは、次のnilように設定します。

for (UIView *v in viewsToRemove) {
   [v removeFromSuperview];
    v = nil;
}

詳細については、たとえば、Arc:複数のボタンの参照をnilに設定するを参照してください。

于 2012-09-26T21:14:55.860 に答える