私はいくつかのコードをARCに変換しています。コードはNSMutableArray内の要素を検索し、その要素を見つけて削除して返します。問題は、要素が「removeObjectAtIndex」とすぐに割り当てを解除されることをある:私はそれを実行するとremoveObjectAtIndexによって「メッセージは割り当て解除されたインスタンスに送信されます」
- (UIView *)viewWithTag:(int)tag
{
UIView *view = nil;
for (int i = 0; i < [self count]; i++)
{
UIView *aView = [self objectAtIndex:i];
if (aView.tag == tag)
{
view = aView;
NSLog(@"%@",view); // 1 (view is good)
[self removeObjectAtIndex:i];
break;
}
}
NSLog(@"%@",view); // 2 (view has been deallocated)
return view;
}
は、私は2番目のログのステートメントで
*** -[UIView respondsToSelector:]: message sent to deallocated instance 0x87882f0
を取得します。
Pre-ARC、removeObjectAtIndex:を呼び出す前にオブジェクトを保持してから、自動解放してください。 ARCに同じことをするにはどうすればいいですか?
'[自己removeObjectAtIndexを:i]を参照してください;'か? – hypercrypt