0

現在、いくつかのカスタム レイヤーをビュー内のサブレイヤーとして使用しているときに、いくつかのパフォーマンスの問題に直面しています。

プログラムで新しいレイヤーを作成した後、次のようにサブレイヤーとして追加します。

[self.view.layer addSublayer:myNewSublayer]; 

これはうまくいきます。ただし、これを何度も行うと、私のアプリはますます遅くなり始めます。ビューに常に新しいサブレイヤーを追加しているので、これが起こると確信しています。したがって、この問題を解決するために、次のような新しいサブレイヤーを追加する前に、self.view.layer からすべてを削除しようとしました。

[self.view.layer setContents:nil];

残念ながら、これは私の問題を解決しませんでした。

新しいサブレイヤーは、サブレイヤーとして追加された後、正しくリリースされます。これを計測器で確認しましたが、メモリ リークはまったくありません。ただし、新しいサブレイヤーを追加するたびにメモリが増加していることがわかります (これは驚くべきことではありません)。

ビューのレイヤーからすべてのサブレイヤーを削除するには、別の方法を見つける必要があると思います。

どんな助けでも感謝します。前もって感謝します。

4

1 に答える 1

1

サブレイヤーをルートレイヤーに継続的に追加し、それらを削除しないと、遅くなり、肥大化します。サブレイヤーを削除するために間違った方法を使用しています:

[[self.view.layer sublayers] makeObjectsPerformSelector:@selector(removeFromSuperlayer)];

setContents:レイヤのイメージ コンテンツを設定します (通常は 経由CGImageRef)。

于 2011-02-01T12:12:36.877 に答える