私は(を使用して)継続的に反復するものNSMutableArray
を持っています。これは、画面を連続的に移動するために行います。UIImageViews
CADisplayLink
UIImageViews
配列からを削除するとUIImageView
、次のエラーが発生することがあります。
EXC_BAD_ACCESS (code=1, address=0x20000008)
ただし、ARC / iOS6を使い始める前は、以前は「配列が列挙中に変異しました」というエラーが発生していたので、この2つのエラーはまったく同じ意味だと思いますが、よくわかりません。
とにかくここに私の質問があります。次のいずれかの方法を使用して配列からaを削除するUIImageView
と、上記のエラーが発生します。
[imageViews removeObject:imageView];
[imageViews performSelector:@selector(removeObject:) withObject:imageView];
[imageViews performSelectorOnMainThread:@selector(removeObject:) withObject:imageView waitUntilDone:YES];
ただし、以下の方法のいずれかを使用しても、エラーが発生することはありません。
[imageViews performSelectorOnMainThread:@selector(removeObject:) withObject:imageView waitUntilDone:NO];
[imageViews performSelector:@selector(removeObject:) withObject:imageView afterDelay:.01];
それで、誰かが私に、NSMutableArray
上記の最初のメソッドのセットを使用してオブジェクトを削除すると、「列挙中に配列が変異した」エラーであると私が信じているのに、2番目のメソッドのセットを使用してもそのエラーが発生しない理由を説明できますか?
私はこのエラーを回避するために上記の2番目のメソッドセットを常に使用しています(そしてそれらを使用するとすべてが完全に機能します)が、それらを使用したときに問題が解決する理由と安全かどうかを正確に知りたいですこれらの2つの方法のいずれかを使用します。
質問を投稿するのはこれが初めてなので、間違った方法で投稿する場合はご容赦ください。