5

画像のアニメーションを表すために、ImageView のレイヤーに CAKeyframeAnimation を追加しています。

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"contents"];
animation.values = arrayOfImages;
[animation setRemovedOnCompletion:YES];
animation.delegate = self;
[animation setValue:delegate forKey:@"AnimatedImageViewDelegate"];
animation.repeatCount = repeatCount;
animation.fillMode = kCAFillModeForwards;
animation.calculationMode = kCAAnimationDiscrete;
[animation setValue:animationName forKey:@"name"];

アニメーションを開始したいときは、次のように呼び出します。

animation.duration = duration;
[self.layer addAnimation:animation forKey:animationName];
[self.layer setContents:[animation.values lastObject]];

アニメーションが終了したら、完全に削除してメモリを解放したいと考えています。

[self.layer removeAllAnimations];       
[self.layer removeAnimationForKey:animationName];

これを行い、Instruments-Activity Monitor を使用すると、完全な imageView を解放しない限り、メモリは解放されません。

UIImageViewを破壊せずにそのアニメーションメモリを解放するにはどうすればよいですか???

4

4 に答える 4

0

便利なメソッドを使用してオブジェクトをインスタンス化しています。したがって、オブジェクトが実際にいつ解放されるかを制御することはできません。それを制御するには、オブジェクトを割り当てて、自分で割り当てを解除する必要があります。

インスタンスを作成します。

CAKeyframeAnimation *animation = [[CAKeyframeAnimation alloc] init];

次に、アニメーションが終了した後、行を削除した後に呼び出します。

[animation release];
于 2012-01-26T22:25:16.247 に答える
0

設定値=画像の配列の場合、CAKeyframeAnimationのメモリについて同じ問題があります。そして、私が得る問題は、デフォルトでメモリにキャッシュされている [UIImage imagewithname:] によって画像が初期化されることです。したがって、私の解決策は [UIImage imageWithContentsOfFile:] を使用するように変更することです。

于 2015-04-23T16:26:37.680 に答える
0

まず、これが iOS 5 プロジェクトである場合、ARC がリリースを処理する必要があります。これは非常に優れています。

さて -- 私は自分のプロジェクトで多くのアニメーションを使用しましたが、ヒープに同様のバーストがあることに気付きました。私の推測では、CA は内部でアニメーション化されたものの多くをキャッシュしています。これらのアイテムが実際に自動リリースされていることを確認するには、instruments ツールを使用して割り当てまたはリークのテストを設定し、次の手順を実行することをお勧めします。

  1. トリガーする状況とアニメーションを決定します。
  2. アニメーションが完了したら、ヒープをマークします。
  3. オブジェクトが削除されているはずの別のビューに移動する何かをトリガーします。
  4. 手順 1-2-3 のプロセスを必要な回数繰り返します。だいたい10回くらいやります。

それだけです..基本的に、アニメーション化 - マーク - 元に戻す - アニメーション化 - マーク。CoreAnimation がオブジェクトを正しく自動解放している場合、ヒープショットが 0 またはほぼ 0 に減少するはずです!

このようなテスト方法の詳細については、次の記事をご覧ください。

http://www.friday.com/bbum/2010/10/17/when-is-a-leak-not-a-leak-using-heapshot-analysis-to-find-undesirable-memory-growth/

于 2012-02-14T18:19:42.277 に答える