0
私は自分のアプリでARCを使用しています。 今私は本当の問題に直面しました。私は左から右に2つのビューコントローラをアニメーション化する必要があります。だから、僕は、ボタンアクションで二つのビューのような、iPhoneオブジェクトが死んでいない
// thanks to stackoverflow for this code
test *control = [[test alloc] initWithNibName: @"test" bundle: nil];
control.view.frame = self.view.frame;
control.view.center = CGPointMake(self.view.center.x + CGRectGetWidth(self.view.frame), self.view.center.y);
[self.view.superview addSubview: control.view];
// Animate the push
[UIView beginAnimations: nil context: NULL];
[UIView setAnimationDelegate: self];
[UIView setAnimationDidStopSelector: @selector(pushAnimationDidStop:finished:context:)];
control.view.center = self.view.center;
self.view.center = CGPointMake(self.view.center.x - CGRectGetWidth(self.view.frame), self.view.center.y);
[UIView commitAnimations];
- (void) pushAnimationDidStop: (NSString *) animationID finished: (NSNumber *) finished context: (void *) context
{
[self.view removeFromSuperview];
}
と私は同じことをやった第2のビューコントローラでのアニメーションが、アニメーションの方向を変えます。
実際の問題は、別のクラスのオブジェクトを作成するたびに、このコードを実行して割り当てを解除しないときです。このコードをプロファイリングすることによって、オブジェクトが生存していて、それが死ぬことがなく、メモリ割り当てが増加するたびに発生することがわかりました。
あなたの*コントロールはどこに割り当てられましたか?あなたのボタンアクションの中にあるのですか?そうであれば、あなたの問題はそこにあります。なぜなら、ボタンを押してアニメートするたびにコードが新しいコントローラを割り当てるからです。もしあなたがまだ持っているかもしれない何らかの理由でボタンのビューを割り当てるには、if(!yourViewController){あなたのコントローラの割り当て}を使って、古いものがすでに自動的にアーク(arcオブジェクトが非アクティブのままであるか、またはビューがロードされていない場合は、自動的にデアロックする)* CMIIW –